3.2.2.2. 修改使用 Hibernate 和 JPA 的应用程序的配置
介绍
如果您的应用程序包含一个 persistence.xml 文件或代码使用了注解 @PersistenceContext 或 @PersistenceUnit,JBoss EAP 6 会在部署时进行检测并假设应用程序使用了 JPA。这会隐性地添加 Hibernate 4 以及一些其他的依赖关系到应用程序的 classpath。
如果您的应用程序使用了 Hibernate 3,在大多数情况下,您将可以切换到 Hibernate 4 且成功运行。然而,如果您在部署应用程序时看到了
ClassNotFoundExceptions,您可以用下列方法来解决:
重要
直接使用 Hibernate 的 Seam 2.2 应用程序可以使用包裹在应用程序里的一个 Hibernate 3 版本。而通过 JBoss EAP 6 的 org.hibernate 模块提供的 Hibernate 4,不被 Seam 2.2 支持。这个例子将帮助您在 JBoss EAp 6 运行应用程序。请注意,将 Hibernate 3 包裹在 Seam 2.2 应用程序不是被支持的配置。
过程 3.13. 配置应用程序
复制所需的 Hibernate 3 JAR 到您的应用程序库。
您可以复制包含缺失类的特定 Hibernate 4 JAR 到应用程序的lib/目录,或者使用其他方法添加它们到 classpath 来解决这个问题。在某些情况下,由于混合使用 Hibernate 版本,这可能会导致ClassCastExceptions或其他类加载问题。如果发生了这种情况,您需要使用下一个方法。设置服务器只使用 Hibernate 3 库。
JBoss EAP 6 允许您将 Hibernate 3.5 (或更高版本) 持久化提供者 JAR 和应用程序打包。为了让服务器只使用 Hibernate 3 库而排除 Hibernate 4 库,您需要在persistence.xml里设置jboss.as.jpa.providerModule为hibernate3-bundled:Java Persistence API (JPA) 开发人员将检测到应用程序里持久性提供者的存在并使用 Hibernate 3 库。关于 JPA 持久性属性的更多信息,请参考 第 3.2.2.3 节 “持久化单元属性”。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 禁用 Hibernate 的二级缓存
Hibernate 3 的二级缓存在 JBoss EAP 6 没有展现和以前版本里一样的行为。如果您在应用程序里是了 Hibernate 二级缓存,您必须禁用它,直至您升级到 Hibernate 4。要禁用二级缓存,您需要在persistence.xml文件里将<hibernate.cache.use_second_level_cache>设置为false。