搜索

7.11. Jakarta persistence 属性更改

download PDF

本节介绍 JBoss EAP 7.0 和 7.1 中引入的 Jakarta Persistence 属性更改。

JBoss EAP 7.0 中引入的 Jakarta Persistence 属性更改

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

jboss.as.jpa.deferdetach 属性控制在每个实体 EntityManager 调用后,在非Jakarta 事务性环境中使用的事务范围持久性上下文以及是否等待持久性上下文关闭时(例如,会话 bean 调用结束时)。属性值默认为 false,即实体在各个 EntityManager 调用后被分离或清除。这是 Jakarta Persistence 规范中定义的正确默认行为。如果属性值设为 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>

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

JBoss EAP 7.1 中引入的 Jakarta Persistence 属性更改

在 JBoss EAP 7.0 中,未同步持久性上下文错误检查不严格,因为它应该在以下区域:

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

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

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

属性描述

wildfly.jpa.skipmixedsynctypechecking

此属性禁用错误检查。它应该仅用作临时措施,以便在 JBoss EAP 7.0 中工作并在 JBoss EAP 7.1 及更高版本中出现故障时向后兼容。因为此属性可能在以后的发行版本中弃用,因此建议您尽快更正应用程序代码。

wildfly.jpa.allowjoinedunsync

此属性是 wildfly.jpa.skipmixedsynctypechecking 的替代选择。它允许应用程序对待与 Jakarta 事务关联的未同步持久性上下文,就像它们同步持久性上下文一样。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.