何时应关闭与数据库的连接? 我在应用程序启动时创建连接一次,然后以这种方式使用实体管理器:
public void createItem(TYPE item){
em.getTransaction().begin();
em.persist(item);
em.getTransaction().commit();
}
public class Connection { //creating connection (one time)
private static final String PERSISTENCE_UNIT_NAME = "ejb";
private static EntityManagerFactory factory;
private static EntityManager em;
static{
factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
em = factory.createEntityManager();
}
public static EntityManager getEntityManager() {
return em;
}
}
我认为关闭连接evey每个操作(如创建)并在我想再次保存项目时创建新连接是没有意义的。
答案 0 :(得分:2)
您不应该将entitymanager设为静态,它应该是您执行事务后删除的对象。这也意味着您应该在操作完成后关闭它。 EntitymanagerFactory可以保持静态,每个程序运行只需要1个。你应该关闭它的原因是你在设备上浪费资源。
关于EMF的更长/更好的解释https://stackoverflow.com/a/4544053/6270761