コードの接続リークを調査しています。接続プールを管理するために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();
}
このコードはDB接続をリークする可能性がありますか?失敗した場合にトランザクションを明示的にロールバックする必要がありますか、それとも自動的に行われますか?entityManager.close()は、DB接続が接続プールに返されることを保証しますか?