轉:http://blog.csdn.net/zhaoqianjava/article/details/6924672
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只是規范了Java持久化的官方標准。JPA有以下幾個優點。
可持久化Java對象。JPA能夠直接持久化復雜的Java對象,並能夠使用JPQL語言進行復雜的查詢。JPQL是JPA專用的查詢語言,是類似於SQL的面向對象的查詢語言。
使用簡單。JPA使用注釋(Annotation)定義Java對象與關系數據庫之間的映射,而傳統的ORM多使用xml配置文件。JPA使用起來比ORM要方便。使用JPA不用關注底層使用什么數據庫。
規范標准化。JPA是JCP組織發布的,是Java官方規定的統一的API。目前已經有多種框架實現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)。
隨着EJB3規范的推出,EJB中的實體Bean(Enity Bean)逐漸被JPA規范所替代,這也是為什么JPA的規范會包含在EJB3的規范中的原因.
但JPA不僅能夠在EJB環境中使用,也能夠在J2SE的環境中使用,相對於EJB2.X的實體BEAN,使用的范圍更廣.
總之,簡單的說,JPA雖然出自EJB3,但是其使用的范圍卻大於EJB3,不僅可以在JavaEE5中,也可以在JavaSE的環境中,如圖所示EJB3和JPA的關系.
目前已經有多個ORM開源框架支持JPA,如Hibernate,TopLink,OpenJPA等等。