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

来源:互联网 发布:js中click事件的触发 编辑:程序博客网 时间:2024/04/30 16:02

       如果使用load方法,hibernate认为该id对应的对象(数据库记录)在数据库中是一定存在的,它可以放心的使用代理来延迟加载该对象。在用到对象中的其他属性数据时才查询数据库,但是万一数据库中不存在该记录,将会抛出ObjectNotFoundException的异常。由于session中的缓存对于hibernate来说是个相当廉价的资源,所以在load时会先查一下session缓存看看该id对应的对象是否存在,不存在则创建代理。所以如果你知道该id在数据库中一定有对应记录存在就可以使用load方法来实现延迟加载。
对于get方法,hibernate会确认一下该id对应的数据是否存在,首先在session缓存中查找,然后在二级缓存中查找,还没有就查数据库,数据库中没有就返回null。

原创粉丝点击