5.11. JPA Persistence 属性变化


JBoss EAP 7.0 中引入的 JPA Persistence 属性变化

添加了一个新的持久性属性 jboss.as.jpa.deferdetach,以提供与之前 JBoss EAP 版本中的持久性行为兼容。

jboss.as.jpa.deferdetach 属性控制非 JTA 事务线程中使用的事务范围的持久性上下文是在每次实体 管理器 调用后分离加载的实体,还是等到持久性上下文关闭(例如,会话 bean 调用结束时)。属性值默认为 false,表示每次调用 EntityManager 后将分离或清除实体。这是 JPA 规范中定义的正确默认行为。如果属性值设为 true,则在持久上下文关闭之前不会分离实体。

在 JBoss EAP 5 中,持久性的行为就像 jboss.as.jpa.deferdetach 属性已设为 true。要在将应用从 JBoss EAP 5 迁移到 JBoss EAP 7 时获得同样的行为,您必须在您的 persistence .xml 中将 jboss.as.jpa. deferdetach 属性值设置为 true,如下例中所示:

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
    <persistence-unit name="EAP5_COMPAT_PU">
    <jta-data-source>java:jboss/datasources/ExampleDS</jta-data-source>
    <properties>
         <property name="jboss.as.jpa.deferdetach" value="true" />
    </properties>
  </persistence-unit>
</persistence>
Copy to Clipboard Toggle word wrap

在 JBoss EAP 6 中,持久性的行为就像 jboss.as.jpa.deferdetach 属性设为 false。这与 JBoss EAP 7 中看到的行为相同,因此在迁移应用时无需任何更改。

JBoss EAP 7.1 中引入的 JPA Persistence 属性变化

在 JBoss EAP 7.0 中,未同步的持久性上下文检查并不像在以下区域中那样严格:

  • 同步容器管理的持久性上下文允许使用与 JTA 事务关联的未同步扩展持久性上下文。相反,它应该抛出 IllegalStateException,以防止使用不同步的持久性上下文。
  • 部署描述符中指定的未同步持久性上下文被视为同步。

此外,JBoss EAP 7.0 中错误地忽略 @PersistenceContext 中的 PersistenceProperty 提示。

在 JBoss EAP 7.1 及更高版本中解决了和修复这些问题。由于这些更新可能会导致应用行为出现不必要的更改,因此 JBoss EAP 7.1 中引入了两个新的持久性单元属性,以提供向后兼容性并保留先前行为。

Expand
属性描述

wildfly.jpa.skipmixedsynctypechecking

此属性禁用错误检查。它应该仅作为在 JBoss EAP 7.0 中应用工作且在 JBoss EAP 7.1 及更高版本中失败的情形中用于向后兼容。由于此属性可能在以后的版本中已弃用,因此建议您在能够修改应用程序代码后尽快进行更正。

wildfly.jpa.allowjoinedunsync

此属性替代 wildfly.jpa.skipmixedsynctypechecking。它允许应用将与 JTA 事务关联的未同步持久性上下文视为同步的持久性上下文。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat