我正在用hibernate和jsp/servlet編寫一個基於Web的應用程序。我已閱讀有關sessionFactory.getCurrentSession
和sessionFactory.openSession
方法。我知道他們之間的基本區別(使用getCurrentSession
您不必關閉連接,並且在您提交事務時,您的會話將自動關閉)。根據我的理解,我們應該選擇getCurrentSession
並通過每次請求會話來完成。
getCurrentSession在網頁中休眠
讓我們考慮以下情形:
- 方法A調用
getCurrentSession
並獲得本屆 - 在方法A,一個事務使用步驟1
- 方法的會話啓動A呼叫方法B,其也具有
getCurrentSession
並開始交易 - 方法B提交其轉賬saction
- 控制返回到方法的同時也提交事務
現在我的問題是
- 將在本屆會議在步驟1中找到和第3步將是相同的會議?
- 如果問題1的答案是肯定的,那麼它將如何處理步驟4中的提交?理想情況下,它應該關閉本身的會話,並應該在第5步拋出異常。
- 如果問題1的答案爲否,那麼您如何處理這種情況?
謝謝託尼,我喜歡你提到的方式。 – Aashutosh 2010-09-27 09:13:57
@託尼恩尼斯:加上一個,真的很精簡。 – 2015-01-25 17:38:00