解決spring boot hibernate 懶加載的問題
spring boot 是快速構(gòu)建微服務(wù)的新框架。
對(duì)于數(shù)據(jù)訪問問題可以直接使用jpa技術(shù),但是在單元測(cè)試發(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項(xiàng)目中如何通過application設(shè)置hibernate的配置選項(xiàng)。
spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true
在spring.jap.properties后面可以接hibernate的各種配置,然后陪孩子會(huì)被自動(dòng)注入的hibernate實(shí)例中。
然后再次運(yùn)行單元測(cè)試全部通過,不在出現(xiàn)懶加載異常。

補(bǔ)充知識(shí):Spring boot + hibernate 懶加載報(bào)錯(cuò):could not initialize proxy - no Session
項(xiàng)目背景
舊項(xiàng)目改造成Spring boot 項(xiàng)目,使用了舊配置的方式引入了hibernate(非jpa)
問題描述
后臺(tái)“對(duì)象.另一個(gè)對(duì)象”時(shí)報(bào)錯(cuò):could not initialize proxy - no Session,出現(xiàn)了懶加載問題。
原因分析
出現(xiàn)該錯(cuò)誤的原因是Hibernate使用sessionFactory來管理session,我們每進(jìn)行一次數(shù)據(jù)庫操作時(shí)都會(huì)新建一個(gè)session對(duì)象,當(dāng)我們操作完成后,hibernate就會(huì)在dao層立即關(guān)閉該session。所以當(dāng)我們操作類中另一個(gè)類的具體屬性時(shí),因?yàn)閟ession已經(jīng)關(guān)閉,就會(huì)報(bào)錯(cuò)。
解決方法
引入對(duì)應(yīng)spring-orm的jar包,在spring boot 的啟動(dòng)類中添加這段代碼:
@Bean
public OpenSessionInViewFilter openSessionInViewFilter(){
return new OpenSessionInViewFilter();
}
注意:以上僅僅適合傳統(tǒng)方法引入hibernate,如果你使用的是jpa,那么需要改為
@Bean
public OpenEntityManagerInViewFilter openEntityManagerInViewFilter(){
return new OpenEntityManagerInViewFilter();
}
以上這篇解決spring boot hibernate 懶加載的問題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java數(shù)組中的元素刪除并實(shí)現(xiàn)向前移的代碼
這篇文章主要介紹了Java數(shù)組中的元素刪除并實(shí)現(xiàn)向前移的代碼的相關(guān)資料,需要的朋友可以參考下2016-05-05
Spring boot 整合KAFKA消息隊(duì)列的示例
這篇文章主要介紹了Spring boot 整合 KAFKA 消息隊(duì)列的示例,幫助大家更好的理解和使用spring boot框架,感興趣的朋友可以了解下2020-10-10
詳解SpringBoot項(xiàng)目整合Vue做一個(gè)完整的用戶注冊(cè)功能
本文主要介紹了SpringBoot項(xiàng)目整合Vue做一個(gè)完整的用戶注冊(cè)功能,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
mybatis 如何利用resultMap復(fù)雜類型list映射
這篇文章主要介紹了mybatis 如何利用resultMap復(fù)雜類型list映射的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07
SpringSecurity之SecurityContextHolder使用解讀
這篇文章主要介紹了SpringSecurity之SecurityContextHolder使用解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03
OKHttp3(支持Retrofit)的網(wǎng)絡(luò)數(shù)據(jù)緩存Interceptor攔截器的實(shí)現(xiàn)
本篇文章主要介紹了OKHttp3(支持Retrofit)的網(wǎng)絡(luò)數(shù)據(jù)緩存Interceptor攔截器的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12
SpringBoot項(xiàng)目部署到騰訊云的實(shí)現(xiàn)步驟
本文主要介紹了SpringBoot項(xiàng)目部署到騰訊云的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01

