2
我正在調查我的代碼中的連接泄漏。我們使用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()確保數據庫連接返回到連接池嗎?
有沒有辦法做自動回滾?這將是一個更好的解決辦法,比強迫我抓住所有異常情況並明確回滾。 – Oleksi
回滾自動執行RuntimeExceptions。看看這個http://static.springsource.org/spring/docs/3.0.1.RELEASE/reference/html/orm.html#orm-hibernate-tx-claclarative – Mirco
有用的信息。我們可以做些什麼來自動回滾某些檢查的異常? – Oleksi