6

是一個連接只在JPA應用程序返回到連接池如果我叫連接何時返回到JPA應用程序中的連接池?

entityManager.close(); 

支持entitymanger的連接可以在其生命週期中更改嗎?

在此先感謝 mojoo

+2

我發現這個連接釋放策略與Hibernate的描述:http://docs.jboss.org/hibernate/stable/core.old/reference/en/html/transactions-connection-release.html – GlenPeterson

回答

4

JPA規範沒有規定這樣的事情和其高達實施管理連接。當事務處於活動狀態時,出於顯而易見的原因,您可以安全地假設連接是相同的,直到提交。一旦txn結束,它可能會被交還,或者可能會根據實現情況持有(並且您不提及你的)

2

這取決於JPA的實現和配置。

在EclipseLink中,默認情況下,連接僅在活動(骯髒)事務的持續時間內進行。即從第一次修改或鎖定,直到提交或回滾。對於非事務性查詢,按需獲取連接並在查詢執行後返回。這可以最大限度地利用連接池。所以,通常em.close()什麼也不做。

您可以使用「eclipselink.jdbc.exclusive-connection.mode」持久性單元屬性進行配置。 「始終」將爲EntityManager的生命持續連接。

您也可以使用不同的連接池進行事務處理,而非事務性讀取。這對於JTA很有用,因爲您可以使用非JTA數據源進行讀取。

相關問題