2014-02-25 109 views
0

我是hibernate的新手,我在使用getCurrentSession()和openSession()檢索會話時有點困惑,許多文章都提到getCurrentSession會創建一個全新的會話,尚未存在,並且如果會話已經可用,則不會創建新會話,另一方面,openSession會創建一個全新的會話。在休眠中使用getCurrentSession()和openSession()檢索會話

  1. 在這裏,我有一個混淆確實openSession()總是創建一個全新的會話?
  2. 休眠池會話是否在getCurrentSession()中使用相同的會話?

能否請你幫我澄清這一點,並表示歉意我沒有犯錯

非常感謝

回答

1
  1. 是。 openSession()將會話綁定到當前上下文。默認情況下是Thread,它也可以在HttpRequest級別使用自定義過濾器或​​
  2. 號Hibernate並不具有實際的連接池開箱約束。看看this question。在該特定上下文中首次調用getCurrentSession()時會話將打開。之後找到已存在的會話,Hibernate使用CurrentSessionContext來確定當前上下文,並返回綁定到該特定上下文的會話。多數應用程序服務器將會話與使用底層ThreadLocal對象創建的Thread關聯。