1. 程式人生 > >EJB之JPA

EJB之JPA

這一 替代 xml配置 存儲 mar 官方 一次 jcp cto

在前一篇文章中大概了解了EJB是什麽?那麽接下來就進一步介紹一下它與JPA有什麽樣的關系?及什麽是JPAJPA怎樣用?

一、是什麽?

第一次聽說JPA是在EJB視屏中,所以一直感覺他們有不解的淵源。可是經過這一段時間學習和總結發現JPA的作用遠遠不局限於此。

JPA是這樣定義的:JPA(Java Persistence API)是Sun官方提出的Java持久化規範。為Java開發者提供了一種對象/關系映射工具來管理Java應用中的關系數據。它的出現主要是為了簡化現有的持久化開發工作和整合ORM技術。

那麽在這裏就簡單羅列一下簡單的知識點:

ORM映射元數據

Java持久化API

查詢語言

註意:JPA本身不是一個新的產品,而是Java編程中的規範,用語規範現有的ORM技術,它不能代替現有的Hibernate、Toplink等ORM框架。相反。在採用JPA開發時,我們仍將使用到這些ORM框架,僅僅是此時開發出來的應用不再依賴於某個持久化提供商。

應用能夠在不改動代碼的情況下在不論什麽JPA環境下執行。真正做到低耦合、可擴展的程序設計。

二、總體架構?

下圖展示了JPA核心類和JPA接口

技術分享

三、與EJB的關系

因為歷史的原因,EJB 3與JPA有著藕斷絲連的關系。

EJB 2.X中,EJB有三種類型的Bean,各自是會話Bean(SessionBean)、實體Bean(Entity Bean)和消息驅動Bean(Message Driven Bean)。

隨著EJB3規範的推出,EJB中的實體Bean(EnityBean)逐漸被JPA規範所替代,這也是為什麽JPA的規範會包括在EJB3的規範中的原因

JPA不僅可以在EJB環境中使用,也可以在J2SE的環境中使用,相對於EJB2.X的實體BEAN,使用的範圍更廣

總之,簡單的說,JPA盡管出自EJB3,可是其使用的範圍卻大於EJB3,不僅能夠在JavaEE5中,也能夠在JavaSE的環境中,如圖所看到的EJB3和JPA的關系

如圖:

技術分享

類或接口 描寫敘述

EntityManagerFactory 這是一個 EntityManager 的工廠類。它創建並管理多個 EntityManager 實例。

EntityManager 這是一個接口,它管理的持久化操作的對象。它的工作原理類似工廠的查詢實例。

Entity 實體是持久性對象是存儲在數據庫中的記錄。

EntityTransaction 它與 EntityManager 是一對一的關系。對於每個 EntityManager 。操作是由 EntityTransaction 類維護。

Persistence 這個類包括靜態方法來獲取 EntityManagerFactory 實例。

Query 該接口由每一個 JPA 供應商,可以獲得符合標準的關系對象。

在上述體系結構中,類和接口之間的關系屬於javax.persistence包。下圖顯示了它們之間的關系。

技術分享

1EntityManagerFactory EntityManager 的關系是1對多。

這是一個工廠類 EntityManager 實例。

2EntityManager EntityTransaction 之間的關系是11。對於每一個EntityManager 操作。僅僅有一個 ()(3EntityTransaction 實例。

4EntityManager Query 之間的關系是1對多。查詢數眾多能夠使用一個 EntityManager 實例運行。

5EntityManager 實體之間的關系是1對多。

一個EntityManager 實例能夠管理多個實體。

四、優勢

其實,JPA並非一項技術,而是一種標準。由於JPA僅僅是一套接口。本身不能完畢不論什麽事情。

JPA僅僅是規範了Java持久化的官方標準。

JPA有下面幾個長處。

可持久化Java對象。

JPA可以直接持久化復雜的Java對象,並可以使用JPQL語言進行復雜的查詢。

JPQL是JPA專用的查詢語言,是類似於SQL的面向對象的查詢語言。

使用簡單。

JPA使用凝視(Annotation)定義Java對象與關系數據庫之間的映射,而傳統的ORM多使用xml配置文件。JPA使用起來比ORM要方便。使用JPA不用關註底層使用什麽數據庫。

規範標準化。

JPA是JCP組織公布的,是Java官方規定的統一的API。眼下已經有多種框架實現JPA標準。使用了JPA的系統可以自由選擇遵循JPA標準的框架,並可以自由更換。

事務性、大數據量。JPA底層使用關系數據庫進行存儲。因此具備關系數據庫的特點,比如事務性、數據完整性、並發訪問、大數據量等。

與其它持久化技術相比。JPA有非常大的技術優勢。

表列出了JPA與其它持久化技術的比較。

五、總結

通過對JPA的簡介,讓我來概括一下吧!

JPA就是一個java持久化規範。它簡化了現有的持久化工作和整合ORM技術。至於它的實現就在我們的實踐中慢慢體會吧!

EJB之JPA