簡體   English   中英

沒有Java EE 6的Hibernate

[英]Hibernate without Java EE 6

我有Websphere 7服務器,它不支持JPA 2.0。 所以我無法在WAS 7 JPA 2.0應用程序上運行。

但我想知道Spring用戶如何在Tomcat或Jetty上運行Hibernate? 這個servlet-container也(如WAS 7)不支持Java EE 6。

所以這意味着我可以在WAS 7上運行Hibernate,結果與Tomcat或Jetty相同?

如果是,使用app-servers進行JPA有什么好處? 為什么所有開發人員都不使用servlet-containers而不是app-servers?

我也聽說過“容器管理”的東西,它允許一些額外的特性和功能。 所以這意味着許多開發人員(使用Spring on Jetty和Tomcat)沒有獲得使用app-servers的容器管理功能的好處?

PS我知道有關適用於JPA 2.0支持的WAS 7的可用Feature Pack補丁,但不是問題。

您可以通過在WEB-INF / lib文件夾中包含相應的jar來引入許多功能,但是servlet容器無法以任何方式幫助您使用該功能,並且它很可能無法與功能實際集成在一起由容器提供。 一個典型的例子是自帶JSF 2.0庫。

在容器中使用實現的真正好處是,容器可以幫助跨多個主機進行群集,提供JDBC連接池等。

因此,在自己包含例如Hibernate時需要更加小心,並在自己的部署中進行所有配置,但是可以完成。

你也可以問一個完全相反的問題:“為什么要使用帶有JPA 2的裸servlet容器,因為它包含在所有Java EE 6服務器中?”。

基本上它歸結為:

  • 有一個輕量級的容器,然后一個沉重的應用程序(春天的方式),
  • 擁有輕量級應用程序,然后是重型容器(Java EE 6方式)。

經過多年的發展,使用Spring和Java EE 6構建應用程序的模型已經融合到有時候你無法通過查看類,無論是Spring還是CDI bean。 所以真正的區別主要在於配置。

應用程序服務器提供“開箱即用”的一組服務,因此如果提供的服務是您需要的服務 ,它們更容易使用。 您只需打包並部署您的應用程序即可。 此外,大多數技術都是由應用程序服務器實例化的,因此您可以避免許多類加載器問題。

應用程序服務器的問題是,有時(通常,實際上),您需要選擇與應用程序服務器提供的特定框架,服務等不兼容的特定版本的特定版本。 在這些情況下,您通常需要使用應用程序服務器,在某些情況下,您可能無法使用應用程序服務器進行操作。

例如,Weblogic 10.x是Java EE 5應用程序服務器,因此它默認提供JSF 1.2和JPA 1.如果要使用更新的東西,則需要手動部署一些額外的庫(JSF 2.0)或補丁服務器(JPA 2.0)。

另一個例子:使用Glassfish 3.1我無法使用Glassfish EL的Tomcat EL intead。 Tomcat EL支持varargs方法調用,而Glassfish EL則不支持。

Java EE應用程序服務器的這種僵硬性使很多人更喜歡開發一個獨立的servlet容器,例如Tomcat或Jetty, 除了 Servlet和JSP API之外你什么沒有開箱即用,但是你可以手動將所有東西放在里面。 您也可以將它與您的應用程序打包在一起,這在您開發時更加舒適,但如果您為每個容器部署多個應用程序(浪費資源,類加載問題,類加載器泄漏,......)會給您帶來問題。

更新:

與在Java EE容器中使用JPA相比,在SE環境(例如Tomcat)中使用JPA存在一些差異。 基本上:

  • 您必須手動管理EntityManagerFactoryEntityManager實例。
  • Tomcat不進行注入,因此@PersistenceContext注釋和類似注釋不起作用。

請注意,某些容器(例如Spring)可以配置為隱藏這些詳細信息,因此您可以像在Java EE容器中一樣工作。

閱讀JPA規范 ,了解有關在SE環境而非EE環境中運行的詳細信息。

關於其他圖書館,一般情況下會發現一些細微差別。 例如,JAX-WS需要為您的webapp注冊servlet和一個監聽器,但其他任何東西都應該是相同的。 通常,您可以在文檔中搜索有關如何在獨立servlet容器中運行該事物的說明。

WAS 7.0有一個JPA 2.0功能包,可以幫助您。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM