解決spring boot hibernate 懶加載的問題
spring boot 是快速構(gòu)建微服務(wù)的新框架。
對于數(shù)據(jù)訪問問題可以直接使用jpa技術(shù),但是在單元測試發(fā)現(xiàn)spring jpa存在hibernate懶加載問題。
但是spring-boot沒有xml配置文件所以現(xiàn)在網(wǎng)絡(luò)上好多的解決方案并不能適用在spring boot框架中。在遇到該問題苦苦查詢后終于無意中發(fā)現(xiàn)了解決方案。
Spring application using JPA with Hibernate, lazy-loading issue in unit test
英文不好沒有細(xì)看,但是可以看到在spring-boot項目中如何通過application設(shè)置hibernate的配置選項。
spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true
在spring.jap.properties后面可以接hibernate的各種配置,然后陪孩子會被自動注入的hibernate實例中。
然后再次運(yùn)行單元測試全部通過,不在出現(xiàn)懶加載異常。
補(bǔ)充知識:Spring boot + hibernate 懶加載報錯:could not initialize proxy - no Session
項目背景
舊項目改造成Spring boot 項目,使用了舊配置的方式引入了hibernate(非jpa)
問題描述
后臺“對象.另一個對象”時報錯:could not initialize proxy - no Session,出現(xiàn)了懶加載問題。
原因分析
出現(xiàn)該錯誤的原因是Hibernate使用sessionFactory來管理session,我們每進(jìn)行一次數(shù)據(jù)庫操作時都會新建一個session對象,當(dāng)我們操作完成后,hibernate就會在dao層立即關(guān)閉該session。所以當(dāng)我們操作類中另一個類的具體屬性時,因為session已經(jīng)關(guān)閉,就會報錯。
解決方法
引入對應(yīng)spring-orm的jar包,在spring boot 的啟動類中添加這段代碼:
@Bean public OpenSessionInViewFilter openSessionInViewFilter(){ return new OpenSessionInViewFilter(); }
注意:以上僅僅適合傳統(tǒng)方法引入hibernate,如果你使用的是jpa,那么需要改為
@Bean public OpenEntityManagerInViewFilter openEntityManagerInViewFilter(){ return new OpenEntityManagerInViewFilter(); }
以上這篇解決spring boot hibernate 懶加載的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
IDEA+Maven創(chuàng)建Spring項目的實現(xiàn)步驟
這篇文章主要介紹了IDEA+Maven創(chuàng)建Spring項目的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07PageHelper插件實現(xiàn)服務(wù)器端分頁功能
這篇文章主要為大家詳細(xì)介紹了PageHelper插件實現(xiàn)服務(wù)器端分頁功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-07-07java學(xué)習(xí)之一維數(shù)組中重復(fù)元素的去除
關(guān)于一維數(shù)組中有重復(fù)的元素該怎么剔除,作為java初學(xué)者的我整理出不調(diào)用任何特殊庫的基礎(chǔ)方法,這種思想在其他語言也適用,有需要的朋友可以借鑒參考下2021-09-09SpringBoot實現(xiàn)連接nacos并支持多環(huán)境部署
這篇文章主要介紹了SpringBoot實現(xiàn)連接nacos并支持多環(huán)境部署方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06springboot配置多數(shù)據(jù)源的實例(MongoDB主從)
下面小編就為大家分享一篇springboot配置多數(shù)據(jù)源的實例(MongoDB主從),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-12-12