程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 真的,為什麼要用Hibernate?

真的,為什麼要用Hibernate?

編輯:關於JAVA

您已經擁有需要的JPA實現

最近,我回答了幾個關於在 IBM® WebSphere® Application Server 環境內使用 Hibernate 的論壇帖子、電子郵件、即時消息和電話咨詢。由於人們對這個主題興趣濃厚,因此我想在這裡介紹有關信息,希望本文會對那些還沒有來得及親自問我的人有所幫助。

具體來說,我指的是在 WebSphere Application Server 環境中使用 Hibernate JPA。這也是原始 Hibernate 編程模型,我將其稱為 Hibernate “經典”。由於這個經典 Hibernate 編程模型並不是 Java™ EE 5 套件的一部分,因此它與這個話題關系不大。這篇文章 有幾個重復版本,該文章描述了如何在 WebSphere Application Server 環境中利用 Hibernate “經典” 編程模型。這種使用基本上類似於其他任何實用程序框架。您可以將其打包為一個(共享)庫並從您的應用程序使用它,但它不是整個應用程序服務器運行時的一個必要部分。

本文主要關注如何在 WebSphere Application Server 環境中使用 Hibernate JPA — 或者說,既然 WebSphere Application Server 已經提供了一個行業領先的 JPA 實現,為什麼 要使用 Hibernate JPA?

JPA 是什麼?

JPA 就是 Java Persistence API,它是標准持久性框架,作為 EJB™ 3.0 規范系列中的一部分在 JAVA EE 5 中首次引入。到 Java EE 6,JPA 2.0 發展為擁有自己的 JSR。JPA 的核心是一個 Object/Relational (O/R) Mapping 設施,但它已經演變為包含幾個 其他特性。由於 JPA 是 Java EE 套件的一個必要組件,它的功能與 EJB 容器和 Web 容器、事務管理、數據庫連接管理和安全管理完全集成。許多技術都注入到 JPA 的創建過程中,比如 EJB CMP、JDO 和 Hibernate。因此,如此多的現有 Hibernate 用戶都想在 WebSphere Application Server 環境中繼續使用這個框架就不足為奇了。

Hibernate 的繼續使用是一個有爭議的有效目標,就像從一個編程模型(經典)到另一個(JPA)需要花費時間和資源一樣。如果沒有足夠的理由在支持這個投資,那麼繼續使用原來有效的工具就行了,這種行為甚至還可能受到鼓勵。

但如果您正在計劃遷移到 JPA 標准並享受其中的好處,那麼有幾個強有力的原因促使您從 Hibernate “經典” 遷移到 WebSphere JPA 解決方案。

WebSphere JPA 解決方案和優勢

WebSphere Application Server JPA 解決方案構建於 Apache OpenJPA 項目之上:

WebSphere Application Server V6.1 Feature Pack for EJB 3.0 首先包含 JPA 並基於 OpenJPA 1.0.x 服務流。

WebSphere Application Server V7 提供了完整的 Java EE 5 堆棧,包括一個更新的、基於 OpenJPA 1.2.x 流的 JPA。

最近,WebSphere Application Server V7 Feature Pack for OSGi Applications and Java Persistence API 2.0 被引入,它基於 OpenJPA 2.0.x 流。

所有這些軟件都利用相同的二進制文件,它們可以從 OpenJPA 下載站點 獲取,因此,有一點可以保證:任何針對 Apache OpenJPA 編寫的應用程序無需修改就可以在 WebSphere Application Server 環境中運行。

當然,WebSphere Application Server 還通過一些已定義的插入點來提供 OpenJPA 基本軟件之外的其他特性,從而提供一個非常完整、非常豐富的 JPA 解決方案。

易於使用

WebSphere JPA 解決方案完全集成到 WebSphere Application Server 產品中。無論您的環境使用這個特性包解決方案中的一個還是使用 WebSphere Application Server v7,JPA 解決方案都可以開箱即用,不需要額外配置或打包。

由於這個集成的 JPA 解決方案(見圖 1),WebSphere Application Server 能夠向基礎 OpenJPA 二進制文件提供一些功能擴展。一些已經被增強的領域包括 IBM DB2® 擴展(具體是 pureQuery 集成和鎖定優化)、性能、配置和管理支持、安全支持、已擴展的跟蹤和日志支持、以及用於消息日志的國家語言支持。

圖 1. WebSphere JPA 架構

WebSphere Application Server JPA 允許在 WebSphere Application Server 運行時安裝和使用替代 JPA 提供者。例如,可以使用 Hibernate JPA,但 Hibernate JPA 提供者不能獲取任何 WebSphere Application Server 擴展。除此之外,Hibernate JPA 解決方案的打包也不簡單。因此,需要注意的是,盡管 WebSphere Application Server 的確支持使用替代 JPA 提供者,但這種方法有一些缺點。

更低的支持成本

完整的 WebSphere JPA 解決方案擁有完整的 IBM 產品服務和支持,這意味著發現的任何問題都將通過常規支持渠道得以解決。JPA 開發團隊的大多數成員都是 Apache OpenJPA 項目的積極貢獻者。所有問題都將記錄在案並通過 Apache OpenJPA 項目解決。然後,這些更新將作為常規 WebSphere 支持流程的一部分方便地交付。

WebSphere JPA 解決方案的另一個主要優勢是不同發行版之間的兼容性支持。重要的是從一個 WebSphere Application Server 發行版遷移到另一個 — 包括完整的版本和特性包 — 盡可能簡單,IBM 也盡一切努力使 JPA 遷移也同樣輕松。如果一個新 JPA 或 Java EE 規范迫使對該產品進行不兼容的更改,通常會提供實現上述行為的文檔和 “支持選項”。由於 OpenJPA 靈活的打包架構,WebSphere Application Server 能夠替代任何不規范的 OpenJPA 行為,使不同發布版之間的 WebSphere Application Server 體驗一致。

如果您使用一個替代 JPA 提供者,比如 Hibernate JPA,則 WebSphere Application Server 支持在該替代 JPA 提供者的已定義插入點停止。在替代 JPA 提供者中發現的任何問題(比如對象映射、數據庫交互、性能問題等)都需要與該提供者一起解決。這也許涉及使用他們的論壇獲取支持,或者建立一個外部服務合同。顯然,這不太方便。

更好的性能

請記住,性能比較可能不夠客觀。由一個 JPA 提供者研發和推廣的任何性能基准測試 — 即使是發布到 Web 上的所謂 “獨立” JPA 基准測試 — 都可能偏向某個 JPA 提供者。如果再加入許可因素,那麼這些類型的特定 JPA 基准測試可能會更散亂。

由於這些和其他原因,IBM 通常依賴行業標准基准測試。例如,SpecJEnterprise 考慮應用程序服務器的幾個方面,但主要關注持久性框架。據估計,75-80% 的 SpecJEnterprise 基准測試依賴持久化層(即 JPA 提供者)。SpecJEnterprise 1Q2010 比較清晰地顯示 WebSphere 在這個領域的領導地位,類似的結果也出現在 2Q2010 和更高版本。

IBM 不斷通過簡單操作(創建、檢索、更新和刪除)、運行行業基准測試以及其他方法比較 WebSphere Application Server JPA 解決方案和其他解決方案。IBM 度量了許多變體,以確保 WebSphere JPA 解決方案繼續保持性能領先地位,並最大化 WebSphere Application Server 的體驗和總體優勢。

結束語

本文主要闡明堅持使用 WebSphere JPA 解決方案而不是遷移到 Hibernate JPA(或其他任何 JPA 提供者)在業務、開發和其他各方面都是明智選擇。簡單易用、更低的成本、更好的性能、以及無縫的體驗不僅能最大化您從 WebSphere Application Server 獲得的好處,還有助於最大化您的開發工作成果。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved