Hibernate 的三种加载方法是什么?

cj285116470 2009-03-12 09:49:47
请问Hibernate 的三种加载方法是什么?谢谢!!!
...全文
165 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
恩,呵呵,受教了!小弟刚学hibernate,总觉得有些时候延迟加载老是弄出异常来,哎,慢慢学习吧~~~
APOLLO_TS 2009-03-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 apple12655 的回复:]
1. get和load区别
load加载方法:
Java代码
Users user = (Users)session.load(Users.class, new Integer(1)); 

Users user = (Users)session.load(Users.class, new Integer(1));

get加载方法:
Java代码
Users user = (Users)session.get(Users.class, new Integer(1)); 

Users user = (Users)session.get(Users.class, new Integer(1));

以上面代码为例:

区别一:如果没有id为1的Users对象,那么,如果通过get方…
[/Quote]

缓存加载--get支持一级缓存。load支持二级缓存。不查询数据库只是到缓存中提取数据。缓存没有然后转至数据库。load 一级转二级然后至数据库,数据变化小性能会高些。

延迟加载是在提取关联对象的时候才有效果!

LazyCat2222 2009-03-13
  • 打赏
  • 举报
回复
1. get和load区别
load加载方法:
Java代码
Users user = (Users)session.load(Users.class, new Integer(1));

Users user = (Users)session.load(Users.class, new Integer(1));

get加载方法:
Java代码
Users user = (Users)session.get(Users.class, new Integer(1));

Users user = (Users)session.get(Users.class, new Integer(1));

以上面代码为例:

区别一:如果没有id为1的Users对象,那么,如果通过get方法加载,则返回的是一个null,如果通过load加载,则返回一个代理对象,如果后面代码如果调用user对象的某个属性(比如user.getPassword())会抛出异常:org.hibernate.ObjectNotFoundException

区别二:load支持延迟加载,get不支持延迟加载
也就是说:Users user = (Users)session.load(Users.class, new Integer(2));这句代码不会去执行数据库查询,只有用到user时才会去执行数据库查询,而Users user = (Users)session.get(Users.class, new Integer(1));则立即去执行数据库查询。 所以Users user = (Users)session.load(Users.class, new Integer(2));不会执行任何sql.
ghostgant 2009-03-13
  • 打赏
  • 举报
回复
get,load
Inhibitory 2009-03-12
  • 打赏
  • 举报
回复
get..., load
qiaozirue 2009-03-12
  • 打赏
  • 举报
回复
我只知道 延迟加载 呵呵..学习

58,452

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧