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. 配置应用程序

  1. 复制所需的 Hibernate 3 JAR 到您的应用程序库。

    您可以复制包含缺失类的特定 Hibernate 4 JAR 到应用程序的 lib/ 目录,或者使用其他方法添加它们到 classpath 来解决这个问题。在某些情况下,由于混合使用 Hibernate 版本,这可能会导致 ClassCastExceptions 或其他类加载问题。如果发生了这种情况,您需要使用下一个方法。
  2. 设置服务器只使用 Hibernate 3 库。

    JBoss EAP 6 允许您将 Hibernate 3.5 (或更高版本) 持久化提供者 JAR 和应用程序打包。为了让服务器只使用 Hibernate 3 库而排除 Hibernate 4 库,您需要在 persistence.xml 里设置 jboss.as.jpa.providerModulehibernate3-bundled
    <?xml version="1.0" encoding="UTF-8"?>
    <persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
        <persistence-unit name="plannerdatasource_pu">
            <description>Hibernate 3 Persistence Unit.</description>
            <jta-data-source>java:jboss/datasources/PlannerDS</jta-data-source>
            <properties>
                <property name="hibernate.show_sql" value="false" />
                <property name="jboss.as.jpa.providerModule" value="hibernate3-bundled" />
            </properties>
        </persistence-unit>
    </persistence>
    
    
    Copy to Clipboard Toggle word wrap
    Java Persistence API (JPA) 开发人员将检测到应用程序里持久性提供者的存在并使用 Hibernate 3 库。关于 JPA 持久性属性的更多信息,请参考 第 3.2.2.3 节 “持久化单元属性”
  3. 禁用 Hibernate 的二级缓存

    Hibernate 3 的二级缓存在 JBoss EAP 6 没有展现和以前版本里一样的行为。如果您在应用程序里是了 Hibernate 二级缓存,您必须禁用它,直至您升级到 Hibernate 4。要禁用二级缓存,您需要在 persistence.xml 文件里将 <hibernate.cache.use_second_level_cache> 设置为 false
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat