JPA全程:Java Persistence API.JPA通過(guò)JDK5.0注解或XML描述對(duì)象-關(guān)系表的映射關(guān)系,并將運(yùn)行期的實(shí)體對(duì)象持久化到數(shù)據(jù)庫(kù)中。
JPA(Java Persisitence API)是Sun官方提出的Java持久化規(guī)范。它為Java開(kāi)發(fā)人員提供了一種對(duì)象/關(guān)系映射工具來(lái)管理Java應(yīng)用中的關(guān)系數(shù)據(jù)。
Hibernate:是一個(gè)開(kāi)放源代碼的對(duì)象關(guān)系映射框架,它對(duì)JDBC進(jìn)行了非常輕量級(jí)的對(duì)象封裝,它將POJO與數(shù)據(jù)庫(kù)表建立映射關(guān)系,是一個(gè)全自動(dòng)的orm框架,hibernate可以自動(dòng)生成SQL語(yǔ)句,自動(dòng)執(zhí)行,使得Java程序員可以隨心所欲的使用對(duì)象編程思維來(lái)操控?cái)?shù)據(jù)庫(kù)。Hibernate可以應(yīng)用在任何使用JDBC的成和,既可以在Java的客戶端程序使用,也可以在Servlet/JSP的Web應(yīng)用中使用,最具革命的意義是,Hibernate可以在應(yīng)用EJB的J2EE架構(gòu)中取代CMP,完成數(shù)據(jù)持久化的重任。
JPA/Hibernate關(guān)系?
Jpa是一種規(guī)范,而Hibernate是它的一種實(shí)現(xiàn)。除了Hibernate,還有EclipseLink(曾經(jīng)的toplink),OpenJPA等可供選擇,所以使用Jpa的一個(gè)好處是,可以更換實(shí)現(xiàn)而不必改動(dòng)太多代碼。
ORM(Object Relational Mapping)框架:是對(duì)象關(guān)系映射的意思,是一種程序技術(shù),用于實(shí)現(xiàn)面向?qū)ο缶幊陶Z(yǔ)言里不同系統(tǒng)類型的系統(tǒng)之間的數(shù)據(jù)轉(zhuǎn)換。
Spring Data是一個(gè)用于簡(jiǎn)化數(shù)據(jù)庫(kù)訪問(wèn),并支持云服務(wù)的開(kāi)源框架。其主要的目標(biāo)是使得數(shù)據(jù)庫(kù)的訪問(wèn)變得方便快捷,把那個(gè)支持map-reduce框架和云計(jì)算數(shù)據(jù)服務(wù)。此外,它還支持基于關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)服務(wù),如Oracle REC等。對(duì)于擁有海量數(shù)據(jù)的項(xiàng)目,可以用Spring Data來(lái)簡(jiǎn)化項(xiàng)目開(kāi)發(fā),就如Spring FrameWork對(duì)JDBC、ORM的支持一樣,Spring Data會(huì)讓數(shù)據(jù)的訪問(wèn)變得更加方便。
Spring Data JPA:可以極大的簡(jiǎn)化JPA的寫(xiě)法,可以在幾乎不用寫(xiě)實(shí)現(xiàn)方法的情況下實(shí)現(xiàn)對(duì)數(shù)據(jù)的訪問(wèn)和操作,除了CRUD外,還包括分頁(yè)、拍下等一些常用功能。
首先我們需要清除的是SPring Data是一個(gè)開(kāi)源框架,在這個(gè)框架中Spring Data JPA只是這個(gè)框架中的一個(gè)模塊,所有名稱才叫Spring Data JPA。如果單獨(dú)使用JPA開(kāi)發(fā),你會(huì)發(fā)現(xiàn)這個(gè)代碼量和使用JDBC開(kāi)發(fā)一樣有點(diǎn)煩人,所以SPring Data JPA的出現(xiàn)就是為了簡(jiǎn)化JPA的寫(xiě)法,讓你只需要編寫(xiě)一個(gè)接口繼承一個(gè)類就能實(shí)現(xiàn)CRUD操作了。