JPA入門

1. JPA是什麼
Java Persistence API,用於對象持久化的API,是Java EE 5.0 平臺標準的 ORM 規範,使得應用程序以統一的方式訪問持久層。提供了以pojo編程模型爲持久化對象的機制:通過 JDK 5.0 註解或 XML 描述對象-關係表的映射關係,並將運行期的實體對象持久化到數據庫中。JPA 的目標之一是制定一個可以由很多供應商實現的API,目前Hibernate 3.2、TopLink 10.1.3以及OpenJpa都提供了JPA的實現
Hibernate
JPA的始作俑者就是Hibernate的作者,Hibernate 從3.2開始,就開始兼容JPA
OpenJPA
OpenJPA 是 Apache 組織提供的開源項目
TopLink
TopLink以前需要收費,如今開源了;OpenJPA雖然免費,但功能、性能、普及性等方面更加需要加大力度。JPA做爲Java EE5裏面的新成員,跟jdbc一樣就是一接口,具體實現由服務器實現

2. JPA優勢
標準化
提供相同的訪問 API,這保證了基於JPA開發的企業應用能夠經過少量的修改就能
夠在不同的JPA框架下運行。越來越多的提供商期待在不久的將來提供 JPA 實施。 
對容器級特性的支持
JPA 框架中支持大數據集、事務、併發等容器級事務
簡單易用,集成方便
JPA的主要目標之一就是提供更加簡單的編程模型,在JPA框架下創建實體和創建Java 類一樣簡單,只需要使用 javax.persistence.Entity進行註釋;JPA的框架和接口也都非常簡單,可媲美JDBC的查詢能力
JPA的查詢語言是面向對象的,JPA定義了獨特的JPQL,而且能夠支持批量更新和修改、JOIN、GROUP BY、HAVING 等通常只有 SQL 才能夠提供的高級查詢特性,甚至還能夠支持子查詢。
支持面向對象的高級特性
 JPA 中能夠支持面向對象的高級特性,如類之間的繼承、多態和類之間的複雜關係,最大限度的使用面向對象的模型

3. JPA缺點
由於非常新,JPA 規範可能還需要進過重要發展纔會變得很穩定。
JPA是一個規範而不是一個產品。
需要提供商提供一個實施,才能獲得這些基於標準的 API 的優勢。
JPA是Hibernate、TopLink,JDO等ORM框架真子集,只提供其中最好的功能,如果應用程序中需要的功能,但是規範中沒有提供的功能,則使用供應商特有的API ,移植起來比較麻煩,所以要儘可能地使用JPA API。

4. JPA包括3方面的技術
ORM映射元數據:JPA支持XML和 JDK 5.0註解兩種元數據的形式,元數據描述對象和表之間的映射關係,框架據此將實體對象持久化到數據庫表中。  

JPA的API:用來操作實體對象,執行CRUD操作,框架在後臺替我們完成所有的事情,開發者從繁瑣的 JDBC和 SQL代碼中解脫出來。  

查詢語言:這是持久化操作中很重要的一個方面,通過面向對象而非面向數據庫的查詢語言查詢數據,避免程序的 SQL語句緊密耦合。

5. JAP生命週期


新建態new 
新創建的實體對象,尚未擁有持久化主鍵,沒有和一個持久化上下文關聯起來
受控態managed 
已經擁有持久化主鍵並和持久化上下文建立了聯繫
遊離態detached 
擁有持久化主鍵,但尚未和持久化上下文建立聯繫
刪除態removed
擁有持久化主鍵,已經和持久化上下文建立聯繫,但已經被安排從數據庫中刪除
 
6. JPQL
Java Persistence Query Language(Java持久化查詢語言)
是一種可移植的查詢語言,可以被編譯成所有主流數據庫服務器上的SQL
JPQL是面向對象的,通過面向對象而非面向數據庫的查詢語言查詢數據,在Java空間對類和對象進行操作,避免程序的SQL語句緊密耦合
使用 javax.persistence.Query接口代表一個查詢實例

參考資料:
JPA從入門到精通 http://wenku.baidu.com/link?url=48ofcD8yH1Hyhda77cKVYV8PBf_4IEHG9o3TAK7dChw5ghaZXBo27wkvtgUOVvQcUGdgK882O6XufHX_aGMQwKW-8_REdwKK4n4AwqU2ZU3
發佈了125 篇原創文章 · 獲贊 39 · 訪問量 63萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章