【问题标题】:When should I close Entity manager?我应该什么时候关闭实体管理器?
【发布时间】:2016-08-27 03:32:07
【问题描述】:

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

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;
      }
}

我认为在每次操作(如创建)时关闭连接并在我想再次保存项目时创建新连接是没有意义的。

【问题讨论】:

标签: java database entitymanager


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2016-10-05
    • 1970-01-01
    • 2011-03-21
    • 2012-12-23
    • 2021-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-11
    相关资源
    最近更新 更多