我将在 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/