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. deferdetachtrue,如下例中所示:
在 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 中引入了两个新的持久性单元属性,以提供向后兼容性并保留先前行为。
| 属性 | 描述 |
|---|---|
|
| 此属性禁用错误检查。它应该仅作为在 JBoss EAP 7.0 中应用工作且在 JBoss EAP 7.1 及更高版本中失败的情形中用于向后兼容。由于此属性可能在以后的版本中已弃用,因此建议您在能够修改应用程序代码后尽快进行更正。 |
|
|
此属性替代 |