Hibernate Lazy

本文详细介绍了Hibernate中lazy的使用方式、有效期、策略及其应用范围,包括在不同标签上的配置方法,以及如何实现延迟加载以优化系统性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

hibernate中lazy的使用:
lazy,延迟加载
Lazy的有效期:只有在session打开的时候才有效;session关闭后lazy就没效了
lazy策略可以用在:
* <class>标签上:可以取值true/false
* 设置<class>标签中的lazy="true",或是保持默认(即不配置lazy属性)
* 如果lazy的属性值为true,那么在使用load方法加载数据时,只有确实用到数据的候 才会发出sql语句;这样有可能减少系统的开销。
* <property>标签上,可以取值true/false,这个特性需要类增强
* <set>/<list>等集合上,可以取值为true/false/extra
*true:它的意思是只有在调用这个集合获取里面的元素对象时,才发出查询语句,加载其集合元素的数据
*false:取消懒加载特性,即在加载对象的同时,就发出第二条查询语句加载其关联集合的数据
*extra:一种比较聪明的懒加载策略,即调用集合的size/contains等方法的时候,hibernate并不会去加载整个集合的数据,而是发出一条聪明的SQL语句,以便获得需要的值,只有在真正需要用到这些集合元素对象数据的时候,才去发出查询语句加载所有对象的数据
* <one-to-one>/<many-to-one>等标签上,可以取值false/proxy/no-proxy
* false:取消懒加载策略,即在加载对象的同时,发出查询语句,加载其关联对象
* proxy:这是hibernate对单端关联的默认懒加载策略,即只有在调用到其关联对象的方法的时候才真正发出查询语句查询其对象数据,其关联对象是代理类
* no-proxy:这种懒加载特性需要对类进行增强,使用no-proxy,其关联对象不是代理类
:o 在class标签上配置的lazy属性不会影响到关联对象!!!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值