我正在调查我的代码中的连接泄漏。我们使用 c3p0 来管理连接池,我的一般 Hibernate 使用模式是这样的:
EntityManager entityManager = entityManagerFactory.createEntityManager();
try {
EntityTransaction transaction = entityManager.getTransaction();
transaction.begin();
//..Work involving calls to find() and merge()
transaction.commit();
} catch (... e) {
//..log message, throw nicer exceptions
} finally {
entityManager.close();
}
此代码是否有可能泄漏数据库连接?在失败的情况下我是否必须显式回滚事务,还是自动完成?entityManager.close() 是否确保将数据库连接返回到连接池?