java - 我什么时候应该关闭实体管理器?

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

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

最佳答案

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

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

关于java - 我什么时候应该关闭实体管理器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36981239/

相关文章:

python - 用python插入varchar2字段

entitymanager - 何时以及为何在 MikroOrm 中使用 em.clear()

spring-boot - 使用 Spring Boot 删除表

java - 为什么 Java 字段不是多态的?

database - 如何禁用特定表(Oracle)的闪回查询日志记录?

c# - SQL 在单个查询中更新多行

java - EntityManager初始化最佳实践

java - 对于所有 JVM GC 实现,压缩真的是不可避免的吗?

java - 如何在 Java 中比较字符串?

java - 使用 Hashmap 查找单个整数