JPA的認識

起源
JPA由EJB 3.0軟件專家組開發,作爲JSR-220實現的一部分。但它不囿於EJB 3.0,你可以在Web應用、甚至桌面應用中使用。JPA的宗旨是爲POJO提供持久化標準規範,由此可見,經過這幾年的實踐探索,能夠脫離容器獨立運行,方便開發和測試的理念已經深入人心了。目前Hibernate 3.2、TopLink 10.1.3以及OpenJPA都提供了JPA的實現

內容
JPA(Java Persistence API)是SUN官方推出的Java持久化規範,它爲Java開發人員提供了一種對象/關聯映射工具來管理Java應用中的關係數據。它的出現主要是爲了簡化現有的持久化開發工作和整合ORM技術,結束現在Hibernate,TopLink,JDO等ORM框架各自爲營的局面。值得注意的是,JPA是在充分吸收了現有Hibernate,TopLink,JDO 等ORM框架的基礎上發展而來的,具有易於使用,伸縮性強等優點。從開發社區的反映上看,JPA手動極大的支持和讚揚,其中就包括了Spring與EJB3.0的開發團隊,着眼未來幾年的技術走向,JPA作爲ORM領域的標準化者的目標應該不難實現。
JPA包括一下三方面的技術
*ORM映射元數據
JPA支持XML和JDK5.0註釋兩種元數據形式,元數據描述對象和表之間的映射關係,框架據此將實體對象持久化到數據庫表中。
*Java持久化API
用來操作實體對象,執行CRUD操作,框架在後臺替我們完成所有的事情,開發者可以從繁瑣的JDBC和SQL代碼中解脫出來。
*查詢語言(JPQL)

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

JPA的優勢
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 中能夠支持面向對象的高級特性,如類之間的繼承、多態和類之間的複雜關係,這樣的支持能夠讓開發者最大限度的使用面向對象的模型設計企業應用,而不需要自行處理這些特性在關係數據庫的持久化。

提示:

JPA不是一種新的ORM框架,他的出現只是用於規範現有的ORM技術,他不能取代現有的Hibernate,TopLink等ORM框架。相反,在採用JPA開發時,我們仍將用到這些ORM框架,只是此時出來的應用不再依賴與某個持久化供應商。應用可以在不修改代碼的情況下在任何JPA環境下運行,真正做到低耦合,可擴展的程序設計。 簡單說,JPA乾的就是Hibernate乾的活,他們的作用是一樣的。但是,JPA只是一套規範,不是一套產品,Hibernate已經是一套產品了。

JPA主要是爲了簡化現有的持久化開發工作和整合ORM技術,結束現在Hibernate,Toplink,JDO等ORM框架各自爲營的局面。之前學的Hibernate,實際上我們面對的是Hibernate的API進行開發,這有什麼不好哪,是我們跟Hibernate這個產品緊密的耦合在了一起,如果離開了Hibernate我們是無法在別的ORM框架中使用我們的應用。使用JPA後,你的應用就可以運行在實現了JPA規範的持久化產品中(如Hibernate,TopLink,JDO)

JPA這門技術是未來發展的必然趨勢,以後我們要採用ORM技術呢,我們就不會在面對Hibernate編程,不會在面對TopLink編程,而是面對JPA規範編程,就是說,過了幾年之後,我們的應用就會很少面對Hibernate API進行編程,這是爲什麼呢,這就好比以前我們訪問數據庫一樣,假設沒有JDBC這門技術的話,我們跟各個數據庫鏈接只能使用各個數據庫廠商給我們提供的API進行數據庫鏈接了,自從有了JDBC後,我們就不再需要面對數據庫廠商給我們提供的API進行數據庫進行鏈接了,而是直接使用JDBC這套規範就可以跟各個數據庫進行對接。目前JPA跟Hibernate,TopLink的關係也是一樣的,JPA就和JDBC一樣提供一種通用的,訪問各個ORM實現產品的橋樑工具。通過JPA技術,我們只需要面對它的規範編程,編出的應用就可以應用在各個持久化產品中(包括Hibernate和TopLink),就是說底層產品對我來說已經不重要了。

JPA的供應商
JPA 的目標之一是制定一個可以由很多供應商實現的API,並且開發人員可以編碼來實現該API,而不是使用私有供應商特有的API。因此開發人員只需使用供應商特有的API來獲得JPA規範沒有解決但應用程序中需要的功能。儘可能地使用JPA API,但是當需要供應商公開但是規範中沒有提供的功能時,則使用供應商特有的API。

1.Hibernate

2.Spring

3.OpenJPA

4.其它

目前支持的實現包括Toplink、Hibernate Entitymanager等。TopLink以前需要收費,如今開源了。OpenJPA雖然免費,但功能、性能、普及性等方面更加需要加大力度。
總結:

JPA是一套規範,Hibernate,TopLink,JDO他們是一套產品,這些產品實現了這個JPA規範,JPA有點像JDBC,爲各種不同的ORM技術提供一個統一的接口,方便把應用移植的不同的ORM技術上。
在這裏插入圖片描述在這裏插入圖片描述

原文:https://blog.csdn.net/fengxuezhiye/article/details/7329001

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章