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 及更高版本中失败的情形中用于向后兼容。由于此属性可能在以后的版本中已弃用,因此建议您在能够修改应用程序代码后尽快进行更正。 |
|
此属性替代 |