频道栏目
IT货架 > > 正文
018关联映射文件中<class>标签中的lazy(懒加载)属性
网友分享于:Jun 12, 2018 11:41:16 PM    来源: IT货架   

Lazy(懒加载):

只有在正真使用该对象时,才会创建这个对象

Hibernate中的lazy(懒加载):

只有我们在正真使用时,它才会发出SQL语句,给我们去查询,如果不使用对象则不会发SQL语句进行查询。

Hibernate中lazy(懒加载)的实现:

         采用了第三方组件的库,这个库叫cglib.jar(比较流行),这个库对我们的类生成代理类(JDK的动态代理,只能对JDK中实现了接口的类进行代理),代理可以控制源对象并且可以对源对象的功能进行增强,而cglib.jar可以对类进行代理(cglib对我们的类进行继承,生成一个子类,这个子类作为代理类返回给你)。

只有你正真代理类的方法,则会查看你有没有加载目标对象,如果没有则会加载目标对象。

Lazy(懒加载)在hibernate何处使用:

         1、<class>标签上,可以取值:true/false,(默认值为:true)

         2、<property>标签上,可以取值:true/false,需要类增强工具

         3、<set>、<list>集合上,可以取值:true/false/extra,(默认值为:true)

         4、<one-to-one>、<many-to-one>单端关联上,可以取值:false/proxy/noproxy

 

Session.load()方法支持lazy,而session.get()不支持lazy;

 

Hibernate的lazy生效期:

生效期和session一样的,session关闭,lazy失效

 

hibernate支持lazy策略只有在session打开状态下有效。

 

<class>标签上,可以取值:true/false,(默认值为:true):

 

实例一:设置<class标签上的lazy=true(默认)

实例二:设置<class标签上的lazy=true(默认)

    注:<class>标签上的lazy只影响到对象的普通属性。对其它(集合)属性不影响

 


广告服务联系QQ:1134687142 | 网站地图

版权所有: IT货架- 内容来自互联网,仅供用于技术学习,请遵循相关法律法规. 京ICP备11030978号-1