2016-08-15 102 views
0
  1. OpenSession()總是打開一個新的會話。
  2. 的getCurrentSession()將返回綁定到上下文

的getCurrentSession()被快速比較的openSession()會話,因此我可以假設的getCurrentSession比的openSession()何時使用OpenSession()和GetCurrentSession()

更好地在什麼情況下我應該使用openSession()和GetCurrentSession()

+0

絕對無關,與JPA API。刪除了標籤 –

回答

2

openSession - >如果我們使用這種方法,我們需要flush()和close()會話。它不會自動刷新和關閉()。當我們決定管理我們自己的Session時,我們可以使用這種方法。

getCurrentSession - >只要首次調用getCurrentSession()並在事務結束時關閉,就會打開一個會話。這會創建一個全新的會話(如果不存在的話)或使用現有的會話(如果已經存在的話)。它會自動配置自動刷新和自動關閉屬性爲true,這意味着會話將自動刷新並關閉。 當我們的事務運行時間很長時,我們可以使用getCurrentSession()方法。

getCurrentSession通常就足夠了。 openSession提供並促進更高級別的會話存儲和管理。這當然是一種先進的選擇,但確實適合非常聰明的開發人員在會話中做一些漂亮的事情的需要。

注:使用的getCurrentSession()創建會話將在提交或回滾自動終止,並且使用的openSession()創建會話需要手動將終止

相關問題