最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Hibernate懶加載之<class>標簽上的lazy

 更新時間:2018年02月08日 12:21:25   作者:lavimer  
這篇文章主要介紹了Hibernate懶加載之<class>標簽上的lazy,分享了相關代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下

本文研究的主要是

lazy的概念:在真正使用某個對象的時候才去加載該對象。

Hibernate的lazy策略可以使用在:

1.<class>標簽上,可以取值:true/false。
2.<property>標簽上,可以取值:true/false,需要類增強工具,對字節(jié)碼進行修改(這個沒多大意義)。
3.<set>和<list>標簽上,可以取值:true/false/extra。
4.<many-to-one>和<one-to-one>單端關聯(lián)標簽上,可以取值:false/proxy/noproxy

下面我們來體會一下在class標簽上的lazy:

User.java:

public class User {
	/* ID */
	private int id;
	/* 用戶名 */
	private String name;
	/* 用戶密碼 */
	private String password;
	/* 創(chuàng)建時間 */
	private Date createTime;
	//省略setter和getter方法
}

User.hbm.xml:

<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
<!-- package表示實體類的包名 --> 
<hibernate-mapping package="com.lixue.bean"> 
  <!-- class結(jié)點的name表示實體的類名,table表示實體映射到數(shù)據(jù)庫中table的名稱 --> 
  <class name="User" table="t_user" lazy="true"> 
    <id name="id"> 
      <generator class="native" /> 
    </id> 
     
    <!-- 映射普通屬性 --> 
    <property name="name" /> 
    <property name="password" /> 
    <property name="createTime" /> 
 
  </class> 
</hibernate-mapping> 

測試方法:

public void testLoad1(){
	/*獲取User,load本身就支持延遲加載(class標簽的lazy對普通屬性有效)*/
	User user = (User) HibernateUtils.getSession().load(User.class, 1);
	/*不會發(fā)出sql(因為ID你查詢的時候就已經(jīng)指定了,沒必要再去查)*/
	System.out.println("user.id=" + user.getId());
	/*會發(fā)出sql,因為此時真正要獲取屬性了,所以會發(fā)出sql語句,并且發(fā)出的語句查出了所有屬性,后面的屬性就不會發(fā)出語句了*/
	System.out.println("user.name=" + user.getName());
	/*不會發(fā)出sql(在查name的時候已經(jīng)查出來了)*/
	System.out.println("user.password=" + user.getPassword());
	/*不會發(fā)出sql(在查name的時候就已經(jīng)查出來了)*/
	System.out.println("user.createTime=" + user.getCreateTime());
}

User user = (User) HibernateUtils.getSession().load(User.class, 1);處打一個斷點進行測試!

對象會出現(xiàn)在對象user-->handler--->target結(jié)點中,如圖:

1.最開始target為null,當執(zhí)行了user.getId()的時候,依然為null,因為ID在我們查詢的時候就已經(jīng)指定了,此時去查詢就沒什么意義。

2.執(zhí)行user.getName()的時候就發(fā)出了一條語句,如圖:

從圖中,我們可以看出,查詢ID的時候,并沒有發(fā)出語句,這個我們剛才已經(jīng)講了,當我們查詢name屬性的時候,就發(fā)了一條語句,并且這條語句的功能是查詢所有的屬性。

3.當執(zhí)行user.getPassword()user.getCreateTime()的時候,就已經(jīng)不會發(fā)出語句了,因為之前已經(jīng)查詢出了屬性值。

注:<class>標簽上的lazy,只支持普通屬性,不會影響類中集合的加載。

總結(jié)

以上就是本文關于Hibernate懶加載之<class>標簽上的lazy的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

相關文章

  • java使用計算md5校驗碼方式比較兩個文件是否相同

    java使用計算md5校驗碼方式比較兩個文件是否相同

    MD5文件效驗碼是一個判斷文件是否是相同文件的途徑,通過比較兩個文件的Md5效驗碼是否相同來精確判斷兩個文件是否相同
    2014-04-04
  • Java中Stringbuilder和正則表達式示例詳解

    Java中Stringbuilder和正則表達式示例詳解

    Java語言為字符串連接運算符(+)提供特殊支持,并為其他對象轉(zhuǎn)換為字符串,字符串連接是通過StringBuilder(或StringBuffer)類及其append方法實現(xiàn)的,這篇文章主要給大家介紹了關于Java中Stringbuilder和正則表達式的相關資料,需要的朋友可以參考下
    2024-02-02
  • Java的Struts框架中配置國際化的資源存儲的要點解析

    Java的Struts框架中配置國際化的資源存儲的要點解析

    這篇文章主要介紹了Java的Struts框架中配置國際化的資源存儲的要點解析,針對用戶所使用的語言來配置資源文件,需要的朋友可以參考下
    2016-04-04
  • 淺談log4j 不打印異常堆棧

    淺談log4j 不打印異常堆棧

    這篇文章主要介紹了淺談log4j 不打印異常堆棧,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02
  • Java線程組操作實例分析

    Java線程組操作實例分析

    這篇文章主要介紹了Java線程組操作,結(jié)合實例形式分析了ThreadGroup類創(chuàng)建與使用線程組相關操作技巧,需要的朋友可以參考下
    2019-09-09
  • 辨析Java中的String與StringBuffer及StringBuilder字符串類

    辨析Java中的String與StringBuffer及StringBuilder字符串類

    這里將為大家來辨析Java中的String與StringBuffer及StringBuilder字符串類型,通常來說StringBuilder的性能更加,需要的朋友可以參考下
    2016-05-05
  • 一文搞明白Java?Spring?Boot分布式事務解決方案

    一文搞明白Java?Spring?Boot分布式事務解決方案

    這篇文章主要介紹了一文搞明白Java?Spring?Boot分布式事務解決方案,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-07-07
  • 詳解Java中的阻塞隊列

    詳解Java中的阻塞隊列

    在去年的面試過程中,被面試官問道“阻塞隊列”這個問題,因為當時并沒有對此問題進行深入理解,只是按照自己的理解說明了該問題,最后面試結(jié)果也不太好,今天對該問題進行簡要的面試并記錄如下;如有錯誤,歡迎指正,需要的朋友可以參考下
    2021-06-06
  • Java并發(fā)編程之LongAdder源碼解析

    Java并發(fā)編程之LongAdder源碼解析

    這篇文章主要為大家介紹了Java并發(fā)編程之LongAdder源碼示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • Java中Controller、Service、Dao/Mapper層的區(qū)別與用法

    Java中Controller、Service、Dao/Mapper層的區(qū)別與用法

    在Java開發(fā)中,通常會采用三層架構(或稱MVC架構)來劃分程序的職責和功能,分別是Controller層、Service層、Dao/Mapper層,本文將詳細給大家介紹了三層的區(qū)別和用法,需要的朋友可以參考下
    2023-05-05

最新評論

合江县| 永兴县| 洞头县| 齐河县| 宁晋县| 建德市| 炉霍县| 和硕县| 贵定县| 育儿| 巴彦县| 竹山县| 理塘县| 东台市| 章丘市| 吉安县| 金华市| 成武县| 德化县| 昌图县| 松原市| 天气| 南岸区| 汝南县| 东明县| 米林县| 蒙山县| 兴宁市| 龙胜| 竹溪县| 鲁甸县| 光山县| 临清市| 武强县| 都江堰市| 西昌市| 敦煌市| 隆安县| 开远市| 大洼县| 仪征市|