Hibernate中get方法和load方法的区别

 我来答
伪墨墨墨墨墨
2017-12-22 · TA获得超过2210个赞
知道大有可为答主
回答量:1678
采纳率:85%
帮助的人:948万
展开全部

hibernate对于load方法认为该数据在数据库中一定存在,可以放心的使用代理来延迟加载,如果在使用过程中发现了问题,只能抛异常;而对于get方法,hibernate一定要获取到真实的数据,否则返回null。

1. 对于get方法,hibernate会确认一下该id对应的数据是否存在,首先在session缓存中查找,然后在二级缓存中查找,还没有就查询数据库,数据库中没有就返回null。这个相对比较简单,也没有太大的争议。主要要说明的一点就是在这个版本中get方法也会查找二级缓存!

2.  load方法加载实体对象的时候,根据映射文件上类级别的lazy属性的配置(默认为true),分情况讨论:

(1)若为true,则首先在Session缓存中查找,看看该id对应的对象是否存在,不存在则使用延迟加载,返回实体的代理类对象(该代理类为实体类的子类,由CGLIB动态生成)。等到具体使用该对象(除获取OID以外)的时候,再查询二级缓存和数据库,若仍没发现符合条件的记录,则会抛出一个ObjectNotFoundException。

(2)若为false,就跟get方法查找顺序一样,只是最终若没发现符合条件的记录,则会抛出一个ObjectNotFoundException。



庚似过王一1i
2017-11-07 · TA获得超过110个赞
知道答主
回答量:123
采纳率:13%
帮助的人:24.8万
展开全部
董卓见吕布战败,盟军势大,烧洛阳,逼献帝迁都长安。盟军入洛阳,各起异心。孙坚在宫井中得到传国玉玺,率军返回江东。遇刘表阻拦,遂结怨。曹操与袁绍发生摩擦,去了扬州。盟军瓦解。接着军阀又开始火并。袁绍攻公孙瓒,被赵云所救。赵云本是袁绍部将,见袁绍无忠君救民之心,于是弃袁绍而投了公孙瓒,但不受重用。在江东,孙坚攻荆州,被刘表军士用乱箭射死。司徒王允在长安设下连环计,让董卓和吕布为争夺歌妓貂蝉而发生冲突,结果董卓被杀。董卓部将郭汜等反扑,杀害王允全家。[1]
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式