Java JPA应用程序中的连接何时返回到连接池?
在JPA应用程序中,如果我调用Java JPA应用程序中的连接何时返回到连接池?,java,jpa,database-connection,connection-pooling,entitymanager,Java,Jpa,Database Connection,Connection Pooling,Entitymanager,在JPA应用程序中,如果我调用 entityManager.close(); ? 支持entitymanger的连接能否在其生命周期内更改 提前谢谢 mojooJPA规范没有定义这些东西,管理连接取决于实现。当事务处于活动状态时,出于明显的原因,您可以安全地假定连接在提交之前是相同的。txn结束后,它可能会被退回,也可能会被保留,具体取决于实现(您不必提及您的实现)这取决于JPA实现和配置 在EclipseLink中,默认情况下,连接仅在活动(脏)事务期间保持。i、 e.从第一次修改或锁定,直
entityManager.close();
?
支持entitymanger的连接能否在其生命周期内更改
提前谢谢
mojooJPA规范没有定义这些东西,管理连接取决于实现。当事务处于活动状态时,出于明显的原因,您可以安全地假定连接在提交之前是相同的。txn结束后,它可能会被退回,也可能会被保留,具体取决于实现(您不必提及您的实现)这取决于JPA实现和配置 在EclipseLink中,默认情况下,连接仅在活动(脏)事务期间保持。i、 e.从第一次修改或锁定,直到提交或回滚。对于非事务性查询,将按需获取连接,并在查询执行后返回。这允许最大限度地使用连接池。因此,通常em.close()什么也不做 您可以使用“eclipselink.jdbc.exclusive connection.mode”持久化单元属性来配置它。“始终”将在EntityManager的生命周期中保持连接
您还可以为事务使用不同的连接池,而不是非事务性读取。这对JTA很有用,因为您可以使用非JTA数据源进行读取。我发现了关于Hibernate连接释放策略的描述: