JPA是基于Java持久化的解決方案,主要是為了解決ORM框架的差異,它的出現在某種程度上能夠解決目前ORM框架之間不能夠兼容的問題,對開發人員來說,能夠更好的在JPA規范下進行系統開發。
?
JPA全稱為Java Persistence API?,Java持久化API是Sun公司在Java EE 5規范中提出的Java持久化接口。JPA吸取了目前Java持久化技術的優點,旨在規范、簡化Java對象的持久化工作。
如圖1.3說明了JPA在系統架構中的作用,使用JPA持久化對象,而不是依賴于某一個ORM框架。
什么是jpa?
JPA的優勢
?
事實上,JPA并不是一項技術,而是一種標準,因為JPA只是一套接口,本身不能完成任何事情。JPA只是規范了Java持久化的官方標準。JPA有以下幾個優點。
? ? ? ? ?可持久化Java對象。JPA能夠直接持久化復雜的Java對象,并能夠使用JPQL語言進行復雜的查詢。JPQL是JPA專用的查詢語言,是類似于SQL的面向對象的查詢語言。
jpa和hibernate的區別??? ? ? ??使用簡單。JPA使用注釋(Annotation)定義Java對象與關系數據庫之間的映射,而傳統的ORM多使用xml配置文件。JPA使用起來比ORM要方便。使用JPA不用關注底層使用什么數據庫。
? ? ? ? ?規范標準化。JPA是JCP組織發布的,是Java官方規定的統一的API。目前已經有多種框架實現JPA標準。使用了JPA的系統可以自由選擇遵循JPA標準的框架,并能夠自由更換。
? ? ? ? ?事務性、大數據量。JPA底層使用關系數據庫進行存儲,因此具備關系數據庫的特點,例如事務性、數據完整性、并發訪問、大數據量等。
? ? ? ? ?與其他持久化技術相比,JPA有很大的技術優勢。表列出了JPA與其他持久化技術的比較。
?
jpa使用教程。
?
?
EJB3與JPA的關系
由于歷史的原因,EJB 3與JPA有著藕斷絲連的關系。EJB 2.X中,EJB有三種類型的Bean,分別是會話Bean(Session Bean)、實體Bean(Entity Bean)和消息驅動Bean(Message Driven Bean)。
jpa復雜查詢?隨著EJB3規范的推出,EJB中的實體Bean(Enity Bean)逐漸被JPA規范所替代,這也是為什么JPA的規范會包含在EJB3的規范中的原因.
但JPA不僅能夠在EJB環境中使用,也能夠在J2SE的環境中使用,相對于EJB2.X的實體BEAN,使用的范圍更廣.
總之,簡單的說,JPA雖然出自EJB3,但是其使用的范圍卻大于EJB3,不僅可以在JavaEE5中,也可以在JavaSE的環境中,如圖所示EJB3和JPA的關系.
?
jpa官網、?
目前已經有多個ORM開源框架支持JPA,如Hibernate,TopLink,OpenJPA等等。