是否可以使用休眠作为 Glassfish 的持久性提供程序,如果可以,如何?
4 回答
Guss 提供的指向 hibernate.org的链接已过期。这是 2010 年 2 月 20 日的谷歌缓存。正如之前版本的链接 wiki 页面中所述,最好将休眠库保存在您的 .ear / .war 而不是 Glassfish 安装目录中,以便不同的应用程序可以使用它们的自己的休眠版本。
现代方法
要将 hibernate 与 glassfish 一起使用,您所要做的就是将 hibernate 及其依赖项放入您的 EAR 文件中。这也可能与 WAR 文件一起使用。
在您的 persistence.xml 中,使用此标记指定休眠:
<provider>org.hibernate.ejb.HibernatePersistence</provider>
你也可以像往常一样指定休眠属性,例如:
<properties> <property name="hibernate.hbm2ddl.auto" value="none"/> </properties>
虽然我不是 Glassfish 或 Hibernate 方面的专家,但我认为您可能会觉得这很有趣:Instructions on using Hibernate in Glassfish
是的,这是一个常见的场景。只需将 Hibernate(及其所有依赖项)全局部署到 Glassfish 中或作为应用程序的一部分。然后使用 Hibernate 作为库来实现您的应用程序。
您必须考虑的下一个问题是您是否要使用 JPA,并将 Hibernate 作为 JPA 提供者,或者您是否要使用 Hibernate plain。
如果您想使用 EJB 和实体 Bean,那么还有一个问题。如果是,我会推荐使用 JPA。
如果您不使用 EJB 实体 Bean,则可以使用 JPA 或普通 Hibernate 来持久化您的 POJO。
您可以构建一个 EAR 并将它们包含在 EAR 的 lib 目录中,而不是将 Hibernate 库放在 Glassfish 服务器的 lib 目录中。我刚刚发布了一篇关于我们使用这种方法的经验的博客文章。IMO 最好将 Hibernate 与应用程序本身捆绑在一起,而不是更改服务器的全局配置。通过这样做,它不会影响也可能在同一服务器上运行的其他应用程序(例如,遗留应用程序)。有关更多信息,请参阅此内容。