hibernate中get与load区别

来源:互联网 发布:cs175平台数据查询 编辑:程序博客网 时间:2024/04/30 23:54

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

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

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

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

 

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

原创粉丝点击