hibernate關(guān)于session的關(guān)閉實例解析
本文研究的主要是hibernate關(guān)于session的關(guān)閉,具體如下。
Student student = new Student();
student.setName("Jan");
student.setAge("22");
student.setAddress("廣東省肇慶市");
Session session =HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
session.save(student);
session.flush();
session.getTransaction().commit();
1、getCurrentSession()與openSession()的區(qū)別?
- 采用
getCurrentSession()創(chuàng)建的session會綁定到當前線程中,而采用openSession(),創(chuàng)建的session則不會 - 采用
getCurrentSession()創(chuàng)建的session在commit或rollback時會自動關(guān)閉,而采用openSession(),創(chuàng)建的session必須手動關(guān)閉
2、使用getCurrentSession()需要在hibernate.cfg.xml文件中加入如下配置:
- 如果使用的是本地事務(wù)(jdbc事務(wù))
<property name="hibernate.current_session_context_class">thread</property>
- 如果使用的是全局事務(wù)(jta事務(wù))
<property name="hibernate.current_session_context_class">jta</property>
openSession() 與 getCurrentSession() 有何不同和關(guān)聯(lián)呢?
在 SessionFactory 啟動的時候, Hibernate 會根據(jù)配置創(chuàng)建相應(yīng)的 CurrentSessionContext ,在getCurrentSession() 被調(diào)用的時候,實際被執(zhí)行的方法是 CurrentSessionContext.currentSession() 。在currentSession() 執(zhí)行時,如果當前 Session 為空, currentSession 會調(diào)用 SessionFactory 的 openSession 。所以 getCurrentSession() 對于 Java EE 來說是更好的獲取 Session 的方法。
許多時候出現(xiàn)session is close();原因就是你在hibernate.cfg.xml里面設(shè)置了
<property name="hibernate.current_session_context_class">thread</property>
系統(tǒng)在commit();執(zhí)行完之后就關(guān)閉了session,這時候你手動再關(guān)閉session就當然提示錯誤了
總結(jié)
以上就是本文關(guān)于hibernate關(guān)于session的關(guān)閉實例解析的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!
相關(guān)文章
解讀CommandLineRunner和@PostConstruct區(qū)別與應(yīng)用場景
這篇文章主要介紹了解讀CommandLineRunner和@PostConstruct區(qū)別與應(yīng)用場景,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12
Spring Boot 2.x中Actuator的一些知識點
這篇文章主要給大家介紹了關(guān)于Spring Boot 2.x中Actuator的一些知識點,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用Spring Boot 2.x具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
SpringBoot項目實現(xiàn)MyBatis流式查詢的教程詳解
這篇文章主要介紹了SpringBoot項目如何實現(xiàn)MyBatis的流式查詢,mybatis的流式查詢,有點冷門,實際用的場景比較少,但是在某些特殊場景下,卻是十分有效的一個方法,感興趣的同學(xué)可以參考一下2023-06-06
CMD運行Intellij Idea編譯后的class文件操作
這篇文章主要介紹了CMD運行Intellij Idea編譯后的class文件操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02
Springboot如何配置多個Redis數(shù)據(jù)源(非集群)
這篇文章主要介紹了Springboot如何配置多個Redis數(shù)據(jù)源(非集群)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-03-03
Spring Boot產(chǎn)生環(huán)形注入的解決方案
這篇文章主要介紹了Spring Boot產(chǎn)生環(huán)形注入的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09

