您的位置:首页 > 其它

HIbernate中get()和load()之间的区别

2017-01-02 20:49 281 查看
这两个方法都用来加载持久化类对象(查询),参数有两个get / load(Class clazz,Serialize id),第一个是需要查找的对象类型,第二个是对应的主键id。

Usertable user=(Usertable)session.get(Usertable.class, 2);
//或者Usertable user=(Usertable)session.load(Usertable.class, 2);

区别:

1,load()查询会先到缓存中去查,如果没有则返回一个代理对象(不马上到数据库中查找),等到后面使用这个代理对象的时候,才到数据中查找相应的信息。若还是没有找到就抛出异常。get()查询则是先到缓存中去查,如果没有就直接到数据库中查询,还没有的话就返回null。

2,load()查询支持延迟加载,所谓延迟加载就是用到后才到数据库中查询,而get()查询不支持。

3,总的来说,使用load()方法需要确保数据库中存在相应的值,否则就会抛异常,而get()查询则是试探性的获取,如果没有就返回null
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息