JAVA程式設計JPA簡介?

Tags: 標準, 簡介,

JAVA程式設計

JPA簡介

JPA通過JDK 5.0註解或XML描寫政策-聯絡表的對映聯絡,並將作業期的實體政策耐久化到資料庫中。

來歷

Sun引入新的JPA ORM標準出於兩個緣由:其一,簡化現有Java EE和Java SE運用的政策耐久化的開發作業;其二,Sun希望聯絡對ORM技術,結束全國歸一。

JPA由EJB 3.0軟體專家組開發,作為JSR-220結束的一部分。但它不囿於EJB 3.0,你可以在Web運用、甚至桌面運用中運用。JPA的意圖是為POJO供應耐久化標準標準,由此可見,通過這幾年的實習探求,可以脫離容器獨立執行,便當開發和檢驗的理念現已眾所周知了。當時Hibernate 3.2、TopLink 10.1.3以及OpenJPA都供應了JPA的結束。

JPA的全體思維和現有Hibernate、TopLink,JDO等ORM佈局大體一致。總的來說,JPA包括以下3方面的技術:

ORM對映元資料

JPA支撐XML和JDK 5.0註解兩種元資料的方法,元資料描寫政策和表之間的對映聯絡,佈局據此將實體政策耐久化到資料庫表中;

JPA的API

用來操作實體政策,實行CRUD操作,佈局在後臺替我們結束悉數的作業,開發者從繁瑣的JDBC和SQL程式碼中脫節出來。

查詢言語

這是耐久化操作中很重要的一個方面,通過面向政策而非面向資料庫的查詢言語查詢資料,避免程式的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才可以供應的高階查詢特性,甚至還可以支撐子查詢。

JPA簡介(2)

5支撐面向政策的高階特性

JPA中可以支撐面向政策的高階特性,如類之間的繼承、多型和類之間的凌亂聯絡,這樣的支撐可以讓開發者最大極限的運用面向政策的模型描寫公司運用,而不需要自行處置這些特性在聯絡資料庫的耐久化。

JPA的供貨商

JPA的政策之一是擬定一個可以由許多供貨商結束的API,並且開發人員可以編碼來結束該API,而不是運用私有供貨商特有的API。因此開發人員只需運用供應商特有的API來獲得JPA標準沒有處置但運用程式中需要的功用。儘可以地運用JPA API,可是當需要供貨商揭穿可是標準中沒有供應的功用時,則運用供貨商特有的API。

1 Hibernate

JPA是需要Provider來結束其功用的,Hibernate便是JPA Provider中很強的一個,當時來說大約無人能出其右。從功用上來說,JPA如今便是Hibernate功用的一個子集。Hibernate從3.2初步,就初步相容JPA。Hibernate3.2獲得了Sun TCK的JPA(Java Persistence API)相容認證。

只需知道Hibernate或許其他ORM佈局,在運用JPA時會發現其實非常簡略上手。例如實體政策的情況,在Hibernate有自由、耐久、遊離三種,JPA裡有new,managed,detached,removed,明眼人一看就知道,這些情況都是一一對應的。再如flush方法,都是對應的,而其他的再如說Query query = manager.createQuery(sql),它在Hibernate裡寫法上是session,而在JPA中變成了manager,所以從Hibernate到JPA的價值大約是非常小的。

一樣,JDO,也初步相容JPA。在ORM的領域中,看來JPA現已是王道,標準便是標準。在各大廠商的支撐下,JPA的運用初步變得廣泛。

2 Spring

Spring + Hibernate常常被稱為Java Web運用人氣最旺的佈局組合。而在JCP通過的Web Beans JSR,卻欲將JSF + EJB + JPA、來自JBoss Seam(Spring在外)的一些元件和EJB 3(當時可以供應有底子阻撓和依託寫入功用的簡化Session Bean佈局)的一個Web組合進行標準化。如今的Spring 2.0為JPA供應了無缺的EJB容器契約,容許JPA在任何環境內可以在Spring處置的效力層運用(包括Spring的悉數AOP和DI增強)。一同,關於下一個Web運用組合會是EJB、Spring + Hibernate仍是Spring + JPA的論爭,早已充滿於耳。

在Spring2.0.1中,正式供應對JPA的支撐,這也促成了JPA的展開,要知道JPA的長處在於可以分別於容器作業,變得更加的簡練。

3 OpenJPA

OpenJPA是Apache組織供應的開源專案,它結束了EJB 3.0中的JPA標準,為開發者供應功用強壯、運用簡略的耐久化資料處置佈局。OpenJPA封裝了和聯絡型資料庫互動的操作,讓開發者把注意力會合在編寫業務邏輯上。OpenJPA可以作為獨立的耐久層佈局發揚作用,也可以輕鬆的與其它Java EE運用佈局或許符合EJB 3.0標準的容器整合。

JPA簡介(3)

4其它

當時支撐的結束包括Toplink、Hibernate Entitymanager等。TopLink從前需要收費,如今開源了。OpenJPA雖然免費,但功用、功用、普及性等方面更加需要加大力度。

關於EJB來說,實體Bean一直是被批評的政策,因為其太凌亂和無窮。JPA的出現,很大程度的分別了凌亂性。這讓EJB的推廣也變得簡略。

言而總歸,JPA標準首要注重的僅是API的舉動方面,而由各種結束結束大多數功用有關的調優。雖然如此,悉數可靠的結束都大約具有某種資料快取,以作為選擇。希望不久的將來,JPA能成為實在的標準。

小結

EJB 3.0和JPA毫無疑問將是Java EE 5的首要賣點。在某些領域中,它們給Java社群帶來了比賽優勢,並使Java在其他領域與比賽對手不分伯仲(因為,不可否認,當時某些領域尚不存在依據標準的方法)。

以前數年來,Spring Framework一直是EJB在公司領域的首要比賽對手。EJB3.0標準處置了許多推動Spring興起的疑問。跟著它的出現,EJB3.0毫無疑問比Spring供應了非常好的開發領會——最眾所周知的優勢是它不需要配置檔案。

JPA供應一種標準的OR對映處置計劃,該處置計劃完全整合到EJB3。0相容的容器中。JPA的老一輩將會繼續安穩展開,可是業務運用程式中的raw運用將可以會減少。結束JPA相容的實體處置器如同很可以是此類技術的展開方向。

Java EE系列標準的較大疑問與JPA沒有任何聯絡。Java EE系列標準的疑問涉及到Web和EJB容器之間的整合。Spring在此領域仍然具有首要比賽優勢。JBoss的Seam專案檢驗運用自定義的方法來處置這一疑問。

Caucho Resin運用效力器妄圖拓寬容器距離並支撐在Web容器中運用@EJB註釋。我們希望Java EE 5.1將處置層整合的疑問,為我們供應一個悉數而標準的依託性寫入方法。

在不久的將來,Sun可以會將JPA作為一個單獨的JSR對待,一同JPA還可以作為Java SE的一部分。不過這些都不太重要,重要的是,我們如今現已可以在脫離容器的情況下、在Java SE運用中運用JPA了。

JPA現已作為一項政策耐久化的標準,不但可以獲得Java EE運用效力器的支撐,還可以直接在Java SE中運用。開發者將無需在現有多種ORM佈局中艱難地選擇,按照Sun的意料,現有ORM佈局頭頂的光環將逐步暗淡,不再具有以往的吸引力。

相關問題答案