淺談hibernate中懶加載禁用操作
淺談hibernate中懶加載禁用操作
懶加載的概念:懶加載就是hibernate中的延遲加載,在hibernate中的一對多,多對多關(guān)系中通過對象導(dǎo)航來查詢對象時一般默認的就是懶加載。就是當(dāng)我們查詢一個對象的時候,在默認情況下,返回的只是該對象的代理對象,當(dāng)用戶去使用該對象的屬性是,才會向數(shù)據(jù)庫中再一次發(fā)出查詢語句。懶加載在某些情況下確實可以減少不必要的sql語句,但是有的情況下,還是會拋出異常。
下面我將介紹懶加載禁用的方式
方式一:
在需要禁用懶加載的實體對象的配置文件中配置lazy="false";
例如:
<many-to-one name="lkm_cust_id" lazy="false" column="lkm_cust_id" class="com.haha.domain.Customer"/>
方式二:
在service中強行加載這個代理對象,因為service層提交完事務(wù)之后,session就關(guān)閉了;所以要在session關(guān)閉之前把這個代理對象給加載了。
public Customer toedit(Customer customer) { Customer c= customerDao.toedit(customer); Hibernate.initialize(c);//強行加載 return c; }
方式三:
注意:這種方法可以高效的解決我們的no-session問題
這個方法用于ssh整合時,其實它跟方式二的原因是一樣的,但是解決的方式不同,這種方法是延長session的生命周期,讓session在jsp頁面加載完畢后在關(guān)閉。
這個過濾器不需要我們寫,因為spring已經(jīng)給我們提供了一個這樣的過濾器類,我們只需配置就可以使用
在web.xml中配置
<!-- 解決no-session問題過濾器 通過filter來讓session在jsp頁面完畢后再關(guān)閉session 注意: 所有Filter的配置都需要放置在struts2入口過濾器配置之前 --> <filter> <filter-name>openSessionInView</filter-name> <filter-class>org.springframework.orm.hibernate5.support.OpenSessionInViewFilter</filter-class> </filter> <filter-mapping> <filter-name>openSessionInView</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
補充知識:hibernate中懶加載和急加載的區(qū)別?
1、fetch = FetchType.LAZY ----懶加載
在加載一個實體的時候,不會馬上從數(shù)據(jù)庫中加載,即從數(shù)據(jù)庫中加載到內(nèi)存中。
2、fetch = FetchType.EAGER ----急加載
在加載一個實體時,會立即從數(shù)據(jù)庫中查詢,與其關(guān)聯(lián)的類也會被同時查詢。
在我們使用@ManyToOne等時,都會被默認為急加載。
以上這篇淺談hibernate中懶加載禁用操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
- Hibernate雙向一對一映射關(guān)系配置代碼實例
- Hibernate雙向多對多映射關(guān)系配置代碼實例
- Hibernate基于ThreadLocal管理Session過程解析
- 解決spring boot hibernate 懶加載的問題
- springboot 2.3之后消失的hibernate-validator解決方法
- Idea+maven搭建SSH(struts2+hibernate5+spring5)環(huán)境的方法步驟
- Spring+SpringMVC+Hibernate整合實例講解
- Hibernate傳入Java對象創(chuàng)建動態(tài)表并錄入數(shù)據(jù)
相關(guān)文章
java模擬http的Get/Post請求,并設(shè)置ip與port代理的方法
下面小編就為大家?guī)硪黄猨ava模擬http的Get/Post請求,并設(shè)置ip與port代理的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-02-02java中計算字符串長度的方法及u4E00與u9FBB的認識
字符串采用unicode編碼的方式時,計算字符串長度的方法找出UNICODE編碼中的漢字的代表的范圍“\u4E00” 到“\u9FBB”之間感興趣的朋友可以參考本文,或許對你有所幫助2013-01-01Java?DelayQueue實現(xiàn)任務(wù)延時示例講解
DelayQueue是一個無界的BlockingQueue的實現(xiàn)類,用于放置實現(xiàn)了Delayed接口的對象,其中的對象只能在其到期時才能從隊列中取走。本文就來利用DelayQueue實現(xiàn)延時任務(wù),感興趣的可以了解一下2022-09-09java使用Rxtx實現(xiàn)串口通信調(diào)試工具
這篇文章主要為大家詳細介紹了java使用Rxtx實現(xiàn)簡單串口通信調(diào)試工具,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-12-12Spring Boot整合mybatis使用注解實現(xiàn)動態(tài)Sql、參數(shù)傳遞等常用操作(實現(xiàn)方法)
這篇文章主要介紹了Spring Boot整合mybatis使用注解實現(xiàn)動態(tài)Sql、參數(shù)傳遞等常用操作(實現(xiàn)方法),本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08Spring Security OAuth2 token權(quán)限隔離實例解析
這篇文章主要介紹了Spring Security OAuth2 token權(quán)限隔離實例解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-11-11Spring Data JPA 之 JpaRepository的使用
這篇文章主要介紹了Spring Data JPA 之 JpaRepository的使用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-02-02