淺談hibernate中懶加載禁用操作
淺談hibernate中懶加載禁用操作
懶加載的概念:懶加載就是hibernate中的延遲加載,在hibernate中的一對多,多對多關系中通過對象導航來查詢對象時一般默認的就是懶加載。就是當我們查詢一個對象的時候,在默認情況下,返回的只是該對象的代理對象,當用戶去使用該對象的屬性是,才會向數(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層提交完事務之后,session就關閉了;所以要在session關閉之前把這個代理對象給加載了。
public Customer toedit(Customer customer) {
Customer c= customerDao.toedit(customer);
Hibernate.initialize(c);//強行加載
return c;
}
方式三:
注意:這種方法可以高效的解決我們的no-session問題
這個方法用于ssh整合時,其實它跟方式二的原因是一樣的,但是解決的方式不同,這種方法是延長session的生命周期,讓session在jsp頁面加載完畢后在關閉。

這個過濾器不需要我們寫,因為spring已經(jīng)給我們提供了一個這樣的過濾器類,我們只需配置就可以使用
在web.xml中配置
<!-- 解決no-session問題過濾器 通過filter來讓session在jsp頁面完畢后再關閉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ù)庫中查詢,與其關聯(lián)的類也會被同時查詢。
在我們使用@ManyToOne等時,都會被默認為急加載。
以上這篇淺談hibernate中懶加載禁用操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
詳解SpringBoot使用RedisTemplate操作Redis的5種數(shù)據(jù)類型
本文主要介紹了SpringBoot使用RedisTemplate操作Redis的5種數(shù)據(jù)類型,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03
半小時實現(xiàn)Java手擼網(wǎng)絡爬蟲框架(附完整源碼)
最近在做一個搜索相關的項目,需要爬取網(wǎng)絡上的一些鏈接存儲到索引庫中,自己寫了一個簡單的網(wǎng)絡爬蟲,感興趣的可以了解一下2021-06-06
java Object轉byte與byte轉Object方式
這篇文章主要介紹了java Object轉byte與byte轉Object方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-08-08
使用RequestBodyAdvice實現(xiàn)對Http請求非法字符過濾
這篇文章主要介紹了使用RequestBodyAdvice實現(xiàn)對Http請求非法字符過濾的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06
Java中用于SMB/CIFS網(wǎng)絡的JCIFS庫的用法詳解
JCIFS是一個強大的庫,允許Java應用程序無縫地與SMB/CIFS資源進行交互,本文將探討JCIFS的概念和工作原理以及如何在?Java?應用程序中有效使用它,希望對大家有所幫助2024-12-12

