您的位置:首页 > 运维架构

shop++ 中hibernate中get()与load()的区别

2015-09-06 00:00 176 查看
摘要: hibernate中get()与load()的区别 在使用shop++ 源码的时候领悟到的。

1.使用load()方法:
hibernate认为该id对应的对象(数据库记录)在数据库中是一定存在的,使用代理来延迟加载该对象。在用到对象中的其他属性数据时才查询数据库,如果数据库中不存在该条记录,此时会抛异常,load方法抛异常是指在使用该对象的数据(调用get()方法获取属性)时,当数据库中不存在该数据时,才抛出异常,而不是在创建这个对象时。由于session缓存问题,在load时会先查一下session缓存看看该id对应的对象是否存在,如果不存在则创建代理。所以如果你知道该id在数据库中一定有对应记录存在就可以使用load方法来实现延迟加载。

2.使用get()方法:
hibernate会确认一下该id对应的数据是否存在,首先在session缓存中查找,然后在二级缓存中查找,还没有就查数据库,数据库中没有就返回null。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hibernate shop++