您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關JPA與Hibernate的優缺點有哪些,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
Java Persistence API
從 EJB 技術可以開始應用時起,對其在實際應用中的可用性就一直存在懷疑。在我看來,產生這種現象最重要的兩個原因是復雜性和資源密集性。結果,隨后出現了比 EJB 更簡單、具有更小資源空間的框架(比如 Spring 和 Hibernate),并且更快流行開來。為了說明這一點,我們注意到 EJB 3.0 規范的方向相對以前出現了一個主要的轉變。作為 JSR 220 的一部分,該規范提供了類似 Plain Old Java Object (POJO) 支持、Dependency Injection(依賴注入)和注釋等功能。現在引入了一組全新的 API:Java Persistence API (JPA),以允許開發者管理 Java EE(甚至 SE)應用程序中的關系數據。另外,Sun 聲稱 Java Persistence API 表現了一些 Hibernate、TopLink(二者都會在稍后討論)、JDO 以及 EJB 框架中***的想法。
當前,GlassFish 項目提供了實施 JPA 的一個參考,JPA 在 GlassFish 應用程序服務器中作為 TopLink Essential 部分。您可以在 GlassFish 社區頁 找到該 JPA 參考實施。不要混淆 TopLink Essentials 和 TopLink,前者現在是由 Oracle Corporation 擁有的關系映射工具。稍后我將在本文中討論 TopLink 框架。
讓我們來討論一些您應該考慮應用 JPA 作為持久化框架的應用場景。
何時考慮將JPA作為持久化框架
您選擇從流行的框架(比如 Hibernate、TopLink 和 EJB)中選擇應用具有“好用”的功能且基于標準的框架。
您需要輕量級的持久化框架,且不需要 EJB 的容器提供的服務。
您需要可以在標準或 Enterprise Java 應用程序中使用的持久化框架。
何時考慮JPA的備選方案
您使用的 Java 的版本決定了實際是否可以應用 JPA。JPA 是 EJB 3.0 規范的一部分,而該規范是 Java EE 5 版本的一部分。如果您未更新到 Java EE 5,則無法使用 JPA。
您的應用程序需要 JPA 無法提供的服務,比如那些由 EJB 容器提供的服務,在那些情況下您更依賴 EJB。
在結束對此框架的討論前,讓我們列出一些使用 JPA 作為持久化框架的優勢和缺點。
JPA有什么優勢?
JPA 是基于標準的。越來越多的提供商期待在不久的將來提供 JPA 實施。
它提供了 Hibernate 和 TopLink 中***的功能。
它可以和 Java SE 和 Java EE 應用程序一起使用,需要使用 EJB 容器,也可以不要。
JPA有什么缺點?
由于非常新,JPA 規范可能還需要進過重要發展才會變得很穩定。
JPA 是一個規范而不是一個產品。您需要提供商提供一個實施,才能獲得這些基于標準的 API 的優勢。
Hibernate
Hibernate 是一個對象持久化框架,簡化了 Java 應用程序和底層關系數據庫之間的對象關系映射。方法是提供 POJO 的透明持久化,作為“中介”層來提供自動持久化,并從 Java 應用程序加載對象到數據庫表。借助 Hibernate,保存對象狀態到數據庫和從數據庫加載對象狀態與調用 Java 對象中的方法一樣容易。您無需從您的應用程序代碼中管理底層的數據操作;Hibernate 框架會為您完成所有的中間步驟。
讓我們討論一些您將會考慮應用 Hibernate 作為持久化框架的應用場景,以及那些您將尋求備選方案的應用場景。
何時使用Hibernate作為持久化框架
您正在尋求一個簡單的持久化框架,該框架容易學習和使用。在您能夠實際開始持久化您的 Java 對象到目標數據庫之前,您只需要了解幾個映射配置文件。
您正在尋求一個非常普通和靈活的持久化框架。Hibernate 的用法非常靈活:無論是否有應用程序服務器都可以使用,無論是否有關系數據庫系統也可以使用。
您不想支付獲取和維護費用。Hibernate 是開源而且免費的。
Hibernate 框架非常值得應用,因為它非常簡單和靈活,同時也很強大。但是,在以下一些應用場景中您可能想要考慮應用其他框架。
何時考慮Hibernate的備選框架
您還不想要其他框架。盡管簡單,Hibernate 框架仍然有自己的學習曲線、維護/更新周期,等等。
您需要容器提供的服務,比如那些由 EJB 提供的服務,在那些情況下您的選擇局限于 EJB。
如果您正在使用或計劃使用 Hibernate 作為您的持久化框架,這里是一些它的優勢和缺點。
Hibernate有什么優勢?
Hibernate 易于學習和使用。正如我在上面提到的,在您可以使用它之前,您只需要了解幾個簡單、自我描述的配置文件。
它 非常靈活。您可以在任何需要持久化服務的應用程序架構中使用 Hibernate。您可以通過 Servlet 和/或 Enterprise Java Bean 在 Standard Java 應用程序、Enterprise Java 應用程序中使用它。它也可以和 Spring 框架很好地集成。
它可以很好地向上擴展,因為它被設計為從底層一直到集群環境中工作。通過類似 Lazy Initialization 的技術以及通過 CGLIB 運行時間字節代碼生成庫優化 Java 反射,***版的 Hibernate 的性能也得到了加強。
Hibernate有什么缺點?
Hibernate 是另一個擁有自己的應用和維護周期的框架。
盡管有積極的社區支持,但是有時候缺乏專注于此產品的提供商也使得宣傳應用此框架顯得沒有說服力。
關于“JPA與Hibernate的優缺點有哪些”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。