0

这个插入是否调用泄漏连接

EntityManagerFactory emf = Persistence.createEntityManagerFactory("foo");
EntityManager em = emf.createEntityManager();
transaction = em.getTransaction();
transaction.begin();

try {
    transaction.begin();
     // insert call goes here
    em.flush();
    transaction.commit();
} catch (Exception e) {
    if (transaction != null && transaction.isActive()) {
        transaction.rollback();
    }
} finally {
    if (em != null) {
        em.close();
        emf.close();
    }
}
4

1 回答 1

0

连接泄漏是因为创建任何连接并保持这些连接打开,您的代码对我来说似乎是正确的。

考虑一下: finally 并不总是被执行。以下情况不执行。

  1. 当执行 try catch 块时 JVM 退出时。
  2. 如果执行 try catch 块的线程被中断或杀死。
于 2013-02-14T10:26:48.230 回答