hibernate中get与load区别



   hibernate中get与load区别

           

1. get和load方法都是hibernate的用来根据主键加载对象的方法接口。

2. get方法默认为非延迟加载,但是当需要加载的对象不存在时,返回null。

2. load方法默认为延迟加载,所以当发出load方法时,此时将返回需要加载的对象的一个代理,不会发出sql语句,这个代理是通过cglib生成的,只有当真正使用该对象(不光是属性)时,才会真正的发出sql语句去数据库中加载对象,但是当需要加载的对象不存在时,抛出“ObjectNotFoundException”异常。

注意:hibernate延迟加载原理是代理方法,所以 load 方法不支持多态查询,因为load延迟加载,所以加载出来的是代理对象不是真正的对象,无法在使用对象前判断对象的具体类型,所以在对象前使用instanceof关键字来判断对象类型是没有效果也没有意义的。

 

注:在hibernate中无论是“更新”还是“删除”都应该采取先加载上来,后再采取“更新”或“删除”,即 “托管状态-->持久状态-->更新/删除-->托管状态/瞬时状态” 一条操作顺序。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值