Hibernate,JPA 的關系 – JAVA編程語言程序開發技術文章

hibernate,jpa

有論壇知名專傢說hibernate是JPA的子集,我不這麼認為。

為瞭說明這個問題,必須的提一下JAVA EE5 規范和JDK5.0的新特性Annotation。
首先肯定一下,EJB3.0,JPA 都屬於JAVA EE5 規范。參考一下下面的table。

JAVA EE5規范。
有人拿JPA跟EJB2.0時代的 Entity bean比較,那麼從EJB3.0開始 ,JPA 也不再是Enterprise Java Bean(EJB)的范疇.他們已經是平級關系。
從EJB3.0開始主要包括Stateless/Stateful session bean and Message Driven Bean.

所謂規范就是博縱傢之長的指導和約束,JPA 就是想幹這個事,統一一下項目中的持久層開發。
我們知道在O/R Mapping 傢族中有Hiberante,JDO,TopLink等。假設你想在多個ORM框架之間切換,

比如JDO換成hibernate,因為都有自己的一套東西,盡管差異化也不是那麼大,但是你依然少不瞭要動代碼,

試想一下,如果有這個一個接口,每個ORM框架都支持,都可以是它的實現,那該多好,說到這裡,JPA 橫空出世瞭。

 

JPA 就是ORM世界的一個接口,更被賦予瞭JAVA世界的持久規范的重任。www.aiwalls.com

可以說是java持久化技術的一個集大成者,它吸取瞭Hiberante,JDO,TopLink等優秀技術和框架,將這幾年發展成熟起來的基於POJO模型的O/R Mapping技術標準化,成為在J2EE和J2SE環境中通用的java持久化API。

並且他們都用的都是JDK5.0的Annotation.目前EJB3.0的OpenJPA,Hibernate 等都可以是它的實現,

也就是說,如果你的項目采用的是Annotation來配置entity(也就是大傢所說的零配置),想從JDO 切換到Hibernate,那麼隻要在JPA的配置文件persistence.xml中修改一下Provider。僅此而已。

 
 

作者:guiguzi629

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。