hibernate如何实现延迟加载

(1)首先介绍一下延迟加载的几种情况:
       当调用Session上的load()方法加载实体时,就会采用延迟加载
       当Session加载某个实体时,会对这个实体中的集合属性值采用延迟加载
       当Session加载某个实体时,会对这个实体所单端关联(one-to-one,many-to-one)的另一个实体对象采用延迟加载
       总结一句话延迟加载就是分为类的延迟加载和集合的延迟加载,即类的延迟加载包括用load()方法加载实体和加载实体所单向关联的另一个实体的对象
(2)延迟加载的过程
       Hibernate从数据库获取某一个对象数据、获取某一个对象的集合属性时,获取某一个对象所关联的另一个对象时,
       由于没有使用该对象的数据,hibernate并不从数据库加载真正的数据。而是为该对象创建一个代理对象来代表这个对象,
       这个对象上的所有属性都为默认值,只有在真正的需要该对象的数据时才创建这个真实的对象,真正的从数据库中加载数据。
       注:如果访问的是对象标识符属性,没有必要初始化代理
(3)延迟加载的使用
       因为在类加载和集合加载的时候都会遇到懒加载的问题,当我们在查询的时候不需要懒加载,因为通过懒加载不能查到是情况下,
       可以在class类标签或者是set集合的标签中设置lazy=false,表示立即加载,而true表示懒加载

ps:有关hibernate的延迟加载,更多的可以参考 http://bbs.itheima.com/thread-8863-1-1.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值