hibernate 中的 get 和 load 的区别

jspxnet 2004-12-22 03:38:29
我测试了一下hibernate 中 get 和 load 的区别,有的地方不太明白。

设 cat 表中没有 ID为1111的数据.

session.get(cat.class, "1111"); //得到null对象

session.load(cat.class,"1111"); //得到的不是空对象,如果你一处理,就包错

get 和 load 在处理上有什么不同,缓存管理上有什么不同.
...全文
159 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
catblue 2004-12-27
  • 打赏
  • 举报
回复
同意
kaymo 2004-12-23
  • 打赏
  • 举报
回复
没考虑这个问题
一般就拿着load上
赫赫

gz
jspxnet 2004-12-23
  • 打赏
  • 举报
回复
一般都用 load() ,load 比 get 好在那,就是使用的时候,才查询???

programeyonger 2004-12-23
  • 打赏
  • 举报
回复
好象一般都用的是load()啊!
IceCraft 2004-12-23
  • 打赏
  • 举报
回复
两者各有利弊,根据需要取舍吧。
get是直接查询数据库,如果查不到就返回null,并不存在如楼上说的隐患吧?
Load会首先从内存中装载,如果以前没有装载或查询出来,才开始查询数据库,某些情况下效率会高一点。但如果类是通过代理映射的,load()方法会返回一个对象,这是一个未初始化的代理,并且直到你调用该对象的某方法时才会去访问数据库,如果数据库中并不存在这条数据,而你去使用它的方法必然会抛出异常,所以你得在使用到这个对象的各处捕获异常,使用起来相对麻烦。但这是使用了代理的情况,如果没有使用代理,只是简单的load,那查不到数据就会抛出异常了。
bluemeteor 2004-12-23
  • 打赏
  • 举报
回复
btw:我这的2.1.7...不知道在3里面load和get在CACHE方面是否存在不同
bluemeteor 2004-12-23
  • 打赏
  • 举报
回复
load()方法是假定你所读取的对象是肯定存在的...而get则是尝试访问..如果没有则返回null.而load就会抛出Exception cant load ...

个人认为这两个方法唯一的区别就是为了实现不同的业务需要...从src上看性能是一样的
老土豆T 2004-12-23
  • 打赏
  • 举报
回复
将起来很麻烦,但实际上load()好..

load是必须要把对象找到,,如果找不到就会报错.

但get不一样,get找不就就算了..我是去get嘛,,所以它找不到返回为null 不会报错.(但隐患很大.)



执行效率上是一样的...所以一般都用load() 也是有道理的
noscar 2004-12-22
  • 打赏
  • 举报
回复
get(),好象是数据库里不一定有的。而load()一定是数据库里有的....
jspxnet 2004-12-22
  • 打赏
  • 举报
回复
我用的是 hibernate3 beta1

67,550

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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