我什么时候应该关闭实体经理?

时间:2016-05-02 11:22:48

标签: java database entitymanager

何时应关闭与数据库的连接? 我在应用程序启动时创建连接一次,然后以这种方式使用实体管理器:

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每个操作(如创建)并在我想再次保存项目时创建新连接是没有意义的。

1 个答案:

答案 0 :(得分:2)

您不应该将entitymanager设为静态,它应该是您执行事务后删除的对象。这也意味着您应该在操作完成后关闭它。 EntitymanagerFactory可以保持静态,每个程序运行只需要1个。你应该关闭它的原因是你在设备上浪费资源。

关于EMF的更长/更好的解释https://stackoverflow.com/a/4544053/6270761