EJB3.0,JPA,Hibernate之間的關係

JB3.0和JAP之間的關係 
EJB3.0是一份規範,該規範由不同的部分組成: 
第一部分爲session bean和message-driven bean定義了新的編程模型,以及部署規則等等; 
第二部分專門定義了持久化相關的規範:實體,對象/關係映射元數據,持久化管理接口和查詢語言。第二部分就是我們所說的JPA(Java Persistence API),之所以取名叫JPA,很有可能是因爲持久化的接口位於javax.persistence. 
所以,JPA是EJB的一部分,是EJB專門爲持久化定義的規範。 

2.Hibernate和EJB3.0之間的關係 
首先你必須要了解的是,一個規範和一個產品是沒有太多可比較性的,EJB3.0是java服務器端組件模型的一份規範,而hibernate是一個具體的產品,所以準確的提問應該是:hibernate實現了EJB3.0的規範嗎? 

正如EJB3.0的規範劃分成了不同的部分一樣,EJB的實現者也有區分,有些產品完全實現了EJB3.0的規範,而有些產品只是實現了EJB3.0的一部分,比如僅實現了Java Persistence部分。 
Hibernate就是這樣的產品,它實現了Java Persistence那部分規範,不僅如此,而且它還提供了一些Java Persistence規範裏面沒有的一些功能。所以也可以說,JPA規範所對應的功能是hibernate的子集。 

3.如何判斷你使用的功能是JPA描述的還是hibernate自己特有的呢? 
一個簡單的方式就是檢查你引入的包,如果你只使用了javax.persistence.*,那麼你使用的功能是通用的JPA提供的,如果你的代碼裏還引入了org.hibernate.*,那麼你就使用了hibernate專有的功能。 

4.實現JPA的不僅僅只有Hibernate EntityManager,還有TopLink,OpenJPA. 

5.JPA已經作爲一項對象持久化的標準,不但可以獲得Java EE應用服務器的支持,還可以直接在Java SE中使用。開發者將無需在現有多種ORM框架中艱難地選擇,按照Sun的預想,現有ORM框架頭頂的光環將漸漸暗淡,不再具有以往的吸引力。 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章