EJB之JPA
在前一篇文章中大概了解了EJB是什麽?那麽接下來就進一步介紹一下它與JPA有什麽樣的關系?及什麽是JPA?JPA怎樣用?
一、是什麽?
第一次聽說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包。下圖顯示了它們之間的關系。
(1)EntityManagerFactory 和 EntityManager 的關系是1對多。
這是一個工廠類 EntityManager 實例。
(2)EntityManager 和 EntityTransaction 之間的關系是1對1。對於每一個EntityManager 操作。僅僅有一個 ()(3)EntityTransaction 實例。
(4)EntityManager 和 Query 之間的關系是1對多。查詢數眾多能夠使用一個 EntityManager 實例運行。
(5)EntityManager 實體之間的關系是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