【发布时间】:2016-10-05 11:35:06
【问题描述】:
什么时候应该关闭实体管理器?
public TYPE getItem(Long id) {
if (id != null) {
try {
em = EMFactory.createEntityManager();
TYPE item=em.find(entityClass, id);
return item;
} catch (Exception e) {
System.err.println(e.getMessage());
} finally {
if (em != null)
em.close();
}
}
return null;
}
@WebListener
public class EMFactory implements ServletContextListener {
private static EntityManagerFactory emf;
@Override
public void contextInitialized(ServletContextEvent event) {
emf = Persistence.createEntityManagerFactory("ejb");
}
@Override
public void contextDestroyed(ServletContextEvent event) {
emf.close();
}
public static EntityManager createEntityManager() {
if (emf == null) {
emf = Persistence.createEntityManagerFactory("ejb");
// throw new IllegalStateException("Context is not initialized yet.");
}
return emf.createEntityManager();
}
}
我总是在任何操作创建/更新/选择/删除后关闭实体管理器。但我想这不是效率。那么应该如何实现呢?
【问题讨论】:
标签: java jpa entitymanager