java - 是否需要在每次查询时关闭实体管理器?

标签 java hibernate jpa

我将在 1 年内使用 JPA 作为数据库框架在 Java 中开发系统。

每次查询时,我都不会关闭 EntityManager,IMO 的理解是 JPA 在执行查询后自动关闭 EntityManager

getSingleResult() or getResultList()

如果不是,那么垃圾收集会收集它并进行处理吗?

最佳答案

应用程序管理的 EntityManagers(您通过调用 emf.createEntityManager() 从 EntityManagerFactory 获得的那些)必须明确关闭。

编辑:您不必在每次查询后关闭 EM,但请确保在从创建它的方法返回之前关闭它。一种常见的方法是将 EM 嵌入到 try/catch/finally block 中,在 finally 情况下调用 em.close();

如果您在符合 Java EE 的容器中使用事务范围的 EntityManager,则 EntityManager 由容器在事务期间创建,并在事务完成时关闭。

关于java - 是否需要在每次查询时关闭实体管理器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25763257/

相关文章:

java - 让 xuggler 与 maven 一起工作

Java - 无法摆脱这种递归方法

java - JPA多对多关系查询问题

java - 类型安全条件查询,JPA 2.0 的新特性 : Path unknown?

java - 使用 Java 树模型

java - Netbeans 未正确生成 javadoc

java - Hibernate 堆栈溢出错误

java - Spring+Hibernate配置

java - 使用 OpenEntityManagerInViewFilter 进行延迟初始化?

java - JPA getResultList() 为 MySQL 返回 BigInteger 但为 Microsoft SQL Server 返回 Integer