栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Hibernate懒加载之标签上的lazy

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Hibernate懒加载之标签上的lazy

本文研究的主要是

lazy的概念:在真正使用某个对象的时候才去加载该对象。

Hibernate的lazy策略可以使用在:

1.标签上,可以取值:true/false。
2.标签上,可以取值:true/false,需要类增强工具,对字节码进行修改(这个没多大意义)。
3.标签上,可以取值:true/false/extra。
4.单端关联标签上,可以取值:false/proxy/noproxy

下面我们来体会一下在class标签上的lazy:

User.java:

public class User {
	
	private int id;
	
	private String name;
	
	private String password;
	
	private Date createTime;
	//省略setter和getter方法
}

User.hbm.xml:

 
 
 
 
   
   
     
       
     
     
     
     
     
     
 
   
 

测试方法:

public void testLoad1(){
	
	User user = (User) HibernateUtils.getSession().load(User.class, 1);
	
	System.out.println("user.id=" + user.getId());
	
	System.out.println("user.name=" + user.getName());
	
	System.out.println("user.password=" + user.getPassword());
	
	System.out.println("user.createTime=" + user.getCreateTime());
}

在User user = (User) HibernateUtils.getSession().load(User.class, 1);处打一个断点进行测试!

对象会出现在对象user-->handler--->target结点中,如图:

1.最开始target为null,当执行了user.getId()的时候,依然为null,因为ID在我们查询的时候就已经指定了,此时去查询就没什么意义。

2.执行user.getName()的时候就发出了一条语句,如图:

从图中,我们可以看出,查询ID的时候,并没有发出语句,这个我们刚才已经讲了,当我们查询name属性的时候,就发了一条语句,并且这条语句的功能是查询所有的属性。

3.当执行user.getPassword()和user.getCreateTime()的时候,就已经不会发出语句了,因为之前已经查询出了属性值。

注:标签上的lazy,只支持普通属性,不会影响类中集合的加载。

总结

以上就是本文关于Hibernate懒加载之标签上的lazy的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/141713.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号