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

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ù)參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

相關文章

  • 解決idea 通過build project 手動觸發(fā)熱部署失敗的問題

    解決idea 通過build project 手動觸發(fā)熱部署失敗的問題

    在debug運行項目的過程中,并且保證(不添加方法,不修改方法名)一定的規(guī)則的情況下,可以通過build project 來手動熱部署項目,本文給大家介紹解決idea 通過build project 手動觸發(fā)熱部署失敗的問題,感興趣的朋友一起看看吧
    2023-12-12
  • 解決Tomcat修改get提交請求亂碼問題

    解決Tomcat修改get提交請求亂碼問題

    這篇文章主要介紹了Tomcat修改get提交請求亂碼問題的解決方案,需要的朋友參考下
    2017-04-04
  • Swagger中@ApiIgnore注解的使用詳解

    Swagger中@ApiIgnore注解的使用詳解

    這篇文章主要介紹了Swagger中@ApiIgnore注解的使用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • SpringBoot整合kafka遇到的版本不對應問題及解決

    SpringBoot整合kafka遇到的版本不對應問題及解決

    這篇文章主要介紹了SpringBoot整合kafka遇到的版本不對應問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • java程序員自己的圖片轉(zhuǎn)文字OCR識圖工具分享

    java程序員自己的圖片轉(zhuǎn)文字OCR識圖工具分享

    這篇文章主要介紹了java程序員自己的圖片轉(zhuǎn)文字OCR識圖工具,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • SpringBoot中@PostConstruct 注解的實現(xiàn)

    SpringBoot中@PostConstruct 注解的實現(xiàn)

    在Spring Boot框架中,?@PostConstruct是一個非常有用的注解,它用于在依賴注入完成后執(zhí)行初始化方法,本文將介紹?@PostConstruct的基本概念、使用場景以及提供詳細的代碼示例,感興趣的可以了解一下
    2024-09-09
  • 教你用Java GUI實現(xiàn)文本文件的讀寫

    教你用Java GUI實現(xiàn)文本文件的讀寫

    今天帶大家來學習怎么用JavaSwing實現(xiàn)實現(xiàn)文本文件讀寫,文中有非常詳細的代碼示例,對正在學習java的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-05-05
  • java結(jié)合WebSphere MQ實現(xiàn)接收隊列文件功能

    java結(jié)合WebSphere MQ實現(xiàn)接收隊列文件功能

    WebSphereMQ,也稱MQSeries,以一致的、可靠的和易于管理的方式來連接應用程序,并為跨部門、企業(yè)范圍的集成提供了可靠的基礎。通過為重要的消息和事務提供可靠的、一次且僅一次的傳遞,MQ可以處理復雜的通信協(xié)議,并動態(tài)地將消息傳遞工作負載分配給可用的資源。
    2015-10-10
  • SpringBoot在idea中的 .idea和 .iml文件的作用

    SpringBoot在idea中的 .idea和 .iml文件的作用

    本文主要介紹了SpringBoot在idea中的 .idea和 .iml文件,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-08-08
  • Java結(jié)構(gòu)型設計模式之橋接模式詳細講解

    Java結(jié)構(gòu)型設計模式之橋接模式詳細講解

    橋接,顧名思義,就是用來連接兩個部分,使得兩個部分可以互相通訊。橋接模式將系統(tǒng)的抽象部分與實現(xiàn)部分分離解耦,使他們可以獨立的變化。本文通過示例詳細介紹了橋接模式的原理與使用,需要的可以參考一下
    2022-09-09

最新評論