5.11. 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,如下例所示。
在 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 中引入了两个新的持久性单元属性,以提供向后兼容性并保留之前的行为。
| 属性 | 描述 |
|---|---|
|
| 此属性禁用错误检查。如果应用程序在 JBoss EAP 7.0 中工作,且在 JBoss EAP 7.1 及之后的版本中发生故障时,它才会用作临时性措施。因为此属性可能会在以后的版本中被弃用,因此建议您在可以这样做时立即更正应用程序代码。 |
|
|
此属性是 |