欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談hibernate中懶加載禁用操作

 更新時間:2020年10月19日 08:59:13   作者:haha_66666  
這篇文章主要介紹了淺談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)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論