如果我调用,连接是否仅返回到 JPA 应用程序中的连接池
entityManager.close();
?
支持实体管理器的连接可以在其生命周期内更改吗?
在此先感谢 mojoo
如果我调用,连接是否仅返回到 JPA 应用程序中的连接池
entityManager.close();
?
支持实体管理器的连接可以在其生命周期内更改吗?
在此先感谢 mojoo
JPA 规范没有定义这些东西,它由实现来管理连接。当事务处于活动状态时,您可以安全地假设连接在提交之前是相同的,原因很明显。一旦 txn 结束,它可能会被退回,或者可能会根据实施情况被保留(你没有提到你的)
这取决于 JPA 实现和配置。
默认情况下,在 EclipseLink 中,连接仅在活动(脏)事务期间保持。即从第一次修改或锁定,直到提交或回滚。对于非事务性查询,按需获取连接并在查询执行后返回。这允许最大程度地使用连接池。所以,通常 em.close() 什么都不做。
您可以使用“eclipselink.jdbc.exclusive-connection.mode”持久性单元属性进行配置。“始终”将在 EntityManager 的生命周期内保持连接。
您还可以将不同的连接池用于事务,而不是非事务性读取。这对 JTA 很有用,因为您可以使用非 JTA 数据源进行读取。