繁体   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