每次查询都需要关闭实体经理吗?

Eri*_*era 3 java hibernate jpa

我在大约1年时间里使用JPA作为数据库框架开发Java系统.

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

getSingleResult()getResultList()

如果没有那么垃圾收集会收集它来处置?

kos*_*tja 8

应用程序管理的EntityManagers(通过调用从EntityManagerFactory获得的实体管理器emf.createEntityManager())必须显式关闭.

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

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