编程语言
首页 > 编程语言> > java – 您应该默认使用应用程序服务器的JPA提供程序吗?

java – 您应该默认使用应用程序服务器的JPA提供程序吗?

作者:互联网

我有一个100%兼容JPA2的应用程序,需要可移植到许多应用程序服务器.符合JPA(理论上)意味着我们可以通过配置切换JPA提供程序(例如,不更改源代码) – (正确???).

在servlet容器(例如Tomcat,Jetty)中运行时,应用程序配置为使用Hibernate运行.我们选择Hibernate而不是TopLink和Eclipselink来实现其成熟度和性能.到目前为止这个工作.

但是,在Java EE应用程序服务器中运行时,我们应该默认使用JPA提供程序,还是坚持使用Hibernate?

我知道在JBoss中,提供者是Hibernate所以它可能并不重要.但是,我认为WebLogic中的提供程序是Eclipselink.我不知道提供者WebSphere或Glassfish使用了什么,但我已经看到了有关如何使用Hibernate作为这些应用程序服务器中的提供程序的详细说明.

我想另一种问这个问题的方法是在这些应用服务器中使用Hibernate会缺少什么?

解决方法:

I have a 100% JPA2 compliant application which needs to be portable to many application servers. Being JPA compliant (…) means we can switch JPA providers via configuration (…)

是.

(…) However, when running within a Java EE application server, should we default to the JPA provider therein, or stick with Hibernate?

好吧,如果你在Java EE 6服务器上部署,这并不重要.目前尚不清楚谁将运行该应用程序,您可以提出建议,但运行时实际上“不是您的业务”:)另请注意,如果您不使用默认提供程序,您可能无法从支持中受益(如果这很重要) ).

I know within JBoss, the provider is Hibernate so it probably doesn’t matter. However, I think the provider within WebLogic is Eclipselink. I have no idea what the provider WebSphere or Glassfish use, but I have seen detailed instructions on how to use Hibernate as the provider within those application servers.

首先,请记住,JPA 2.0是Java EE 6的一部分,而GlassFish v3是目前唯一的一个Java EE 6容器. WebLogic和WebSphere是Java EE 5服务器,它们可能不支持JPA 2.0.

现在,关于默认提供者:

> GlassFish v3使用EclipseLink 2.0作为默认提供程序,但可以配置为使用Hibernate 3.5(通过加载项).
>在Weblogic 10.3.2中,默认JPA提供程序是OpenJPA / Kodo,EclipseLink 1.2可用作WLS模块.在WLS 10.3.3(尚未发布)中,EclipseLink 2.0将作为WLS模块提供,默认仍为OpenJPA / Kodo.但是,容器JPA API仍将是JPA 1.0!似乎可以在您的应用程序中打包JPA 2.0提供程序.请参阅this threadthis page.但这不是官方支持的,使用Hibernate 3.5做同样的事情可能是another story.
>在WebSphere 6和7中,默认提供程序是OpenJPA. This link将为您提供有关更改默认提供程序(以及后果)的方法的一些详细信息.但我不能告诉你更多.

I guess another way to ask the question is what would we be missing by using Hibernate in these application servers?

正如我所提到的,供应商可能不支持这一点.此外,如果您希望最大限度地提高可移植性并计划在不久的将来部署您的应用程序,那么选择JPA 2.0可能不是明智的选择(或者如果您愿意,也可能过于乐观).

标签:java,hibernate,jpa-2-0,application-server
来源: https://codeday.me/bug/20190606/1190615.html