什麼是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的整體思想和現有Hibernate,TopLink,JDO等ORM框架大致一致。總的來講,JPA包括如下3方面的技術:框架
• ORM映射元數據工具
JPA支持XML和JDK5.0註釋(也可譯做註解)兩種元數據的形式,元數據描述對象和表之間的映射關係,框架據此將實體對象持久化到數據庫表中。設計
• Java持久化API對象
用來操做實體對象,執行CRUD操做,框架在後臺替咱們完成全部的事情,開發者能夠從繁瑣的JDBC和SQL代碼中解脫出來。接口
• 查詢語言(JPQL)開發
這是持久化操做中很重要的一個方面,經過面向對象而非面向數據庫的查詢語言查詢數據,避免程序的SQL語句緊密耦合。產品
提示:JPA不是一種新的ORM框架,他的出現只是用於規範現有的ORM技術,他不能取代現有的Hibernate,TopLink等ORM框架。相反,在採用JPA開發時,咱們仍將使用到這些ORM框架,只是此時開發出來的應用再也不依賴於某個持久化提供商。應用能夠在不修改代碼的狀況下在任何JPA環境下運行,真正作到低耦合,可擴展的程序設計。社區
簡單說,JPA乾的東西就是Hibernate乾的東西,他們的做用是同樣的。但要注意的是:JPA只是一套規範,不是一套產品,Hibernate已是一套產品了。他的出現主要是爲了簡化現有的持久化開發工做和整合ORM技術,結束如今Hibernate,TopLink,JDO等ORM框架各自爲營的局面。 以前學的Hibernate,實際上咱們面對的是Hibernate的API進行開發,那麼面對Hibernate的API開發有哪些很差的地方呢?很差的地方是咱們跟Hibernate這個產品就會緊密的耦合在一塊,若是離開了Hibernate咱們是沒法在別的ORM框架中使用咱們的應用的。那麼JPA的出現就是爲告終束如今Hibernate,TopLink,JDO等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是一套規範,不是一套產品,那麼像Hibernate,TopLink,JDO他們是一套產品,若是說這些產品實現了這個JPA規範,那麼咱們就能夠叫他們爲JPA的實現產品。
JPA的主要設計者是Hibernate的設計者。JPA是一種規範不是產品,而Hibernate是一種ORM技術的產品。JPA有點像JDBC,爲各類不一樣的ORM技術提供一個統一的接口,方便把應用移植到不一樣的ORM技術上。
低耦合一直是咱們在軟件設計上追求的目標,使用JPA,就能夠把咱們的應用徹底從Hibernate中解脫出來了。