JPA全稱: Java Persistence API
JPA的宗旨是為POJO提供持久化標准規范,能夠脫離容器獨立運行,很方便開發和測試。
JPA通過JDK 5.0注解或XML描述對象-關系表的映射關系,並將運行期的實體對象持久化到數據庫中。
出現的原因:
簡化現有Java EE和Java SE應用的對象持久化的開發工作;
Sun希望整合對ORM技術,實現持久化領域的統一。
JPA的實現框架有:Hibernate EntityManager(RedHat)、TopLink Essentials(Oracle/GlassFish,EJB 3.0中的JPA參考實現),Apache OpenJPA(BEA)、EclipseLink(http://www.eclipse.org/eclipselink/)、JDO等ORM框架
JPA技術:
1.ORM映射元數據:
JPA支持XML和JDK 5.0注解兩種元數據的形式,元數據描述對象和表之間的映射關系,框架據此將實體對象持 久化到數據庫表中;
2.JPA的API:
用來操作實體對象,執行CRUD操作,框架在后台替我們完成所有的事情,開發者從繁瑣的JDBC和SQL代碼中解脫出來。
3.查詢語言:
通過面向對象而非面向數據庫的查詢語言查詢數據,避免程序的SQL語句緊密耦合
ORM 是Object-Relation-Mapping,即對象關系影射技術,是對象持久化的核心。ORM是對JDBC的封裝,從而解決了JDBC的各種存在問題:
JPA是目前比較流行的一種ORM技術之一,所以他擁有ORM技術的各種特點,當然他還有自己的一些優勢:
1.標准化
JPA 是 JCP 組織發布的 Java EE 標准之一,因此任何聲稱符合 JPA 標准的框架都遵循同樣的架構,提供相同的訪問 API,這保證了基於JPA開發的企業應用能夠經過少量的修改就能夠在不同的JPA框架下運行。
2.對容器級特性的支持
JPA 框架中支持大數據集、事務、並發等容器級事務,這使得 JPA 超越了簡單持久化框架的局限,在企業應用發揮更大的作用。
3.簡單易用,集成方便
JPA的主要目標之一就是提供更加簡單的編程模型:在JPA框架下創建實體和創建Java 類一樣簡單,沒有任何的約束和限制,只需要使用 javax.persistence.Entity進行注釋;JPA的框架和接口也都非常簡單,沒有太多特別的規則和設計模式的要求,開發者可以很容易的掌握。JPA基於非侵入式原則設計,因此可以很容易的和其它框架或者容器集成。
4.可媲美JDBC的查詢能力
JPA的查詢語言是面向對象而非面向數據庫的,它以面向對象的自然語法構造查詢語句,可以看成是Hibernate HQL的等價物。JPA定義了獨特的JPQL(Java Persistence Query Language),JPQL是EJB QL的一種擴展,它是針對實體的一種查詢語言,操作對象是實體,而不是關系數據庫的表,而且能夠支持批量更新和修改、JOIN、GROUP BY、HAVING 等通常只有 SQL 才能夠提供的高級查詢特性,甚至還能夠支持子查詢。
5.支持面向對象的高級特性
JPA 中能夠支持面向對象的高級特性,如類之間的繼承、多態和類之間的復雜關系,這樣的支持能夠讓開發者最大限度的使用面向對象的模型設計企業應用,而不需要自行處理這些特性在關系數據庫的持久化。