Hibernate裏sessionFactory的openSession()和getCurrentSession()的區別

       session.openSession()和session.getCurrentSession()兩個方法都是得到session對象,但是區別是:

    openSession()每次得到的都是新的session對象,用完後要手動close()。

       getCurrentSession()是從上下文(上下文有兩種:一種是thread,主要是從數據庫來界定它的事務;一種是jta,採用分佈式來界定它的事務,jta 要運行的時候需要application server即應用服務器的支持)找,如果有session對象,則用舊的,如果沒有,則建一個新的session,事務提交後自動closeSession()。

     注:什麼時候要用到currentSession呢,比如在添加用戶的時候,是往user表添加一條數據,但如果要在添加user的同時也向日誌表添加一條記錄,用hibernate來實現的話,這兩個添加方法的操作理應放在同一個事務裏面,要麼同時提交,要麼回滾。


最後,歡迎訪問風格清新簡潔的輕博客網站[指尖一刻]

發佈了28 篇原創文章 · 獲贊 10 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章