hibernate基础(十):延迟加载(懒加载)

1.懒加载的作用:提高效率

 

2.类的懒加载

           (1).使用:lazy属性设置为true才行

<hibernate-mapping>
    <class name="com.domain.user" table="user" lazy="true">
        ...
    </class>
</hibernate-mapping>

           (2).类的懒加载只针对普通属性有效

           (3).session.load()和session.get()区别:(实质就是懒加载的区别)

                      ^1.get()一旦调用就去查询,并且返回的是实体对象。load()是在访问非ID字段时才去查询,并且返回的是代理对象。因为load()是访问时才查询的,而查询需要依靠session对象,所以当session关闭的情况下,会抛出LazyInitializationException

                      ^2.get()查不到会抛NullPointerException,load()会抛ObjectNotFoundException

 

3.集合的懒加载

           (1).集合默认就是懒加载的

           (2).当通过一个对象加载关联的集合时,是懒加载。

                如果把集合的懒加载的懒加载变成false,则在获取classes时就将集合加载了

           (3).集合的懒加载除了true和false,还有extra:

                 当使用聚合函数(count,max,min,avg)时,此时不需要加载整个集合的值就可以得到

 

4.单端关联的懒加载:让多的一方加载一的一方

           many-to-one中lazy的值可以是false,proxy,no-proxy。后两者相当于true

 

5.当报no-session的错误时,实质是数据还没加载出来,session关闭了

 

6.懒加载的原理:通过改变sql发出的时间实现懒加载

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鹏哥哥啊Aaaa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值