论坛首页 Java企业应用论坛

update和saveOrUpdate详解

浏览 81114 次
该帖已经被评为精华帖
作者 正文
   发表时间:2004-05-13  
本来以为自己对hibernate了解并不深,所以一直没有进hibernate的讨论区。唉,最近java那边的帖子没有什么新的,所以无聊得紧,进来看看。这一下才知道,原来又是一片新天地。
   刚刚看了robbin的这篇帖子,感觉,呵呵,又有所长进,要是每次都能这样日有所进的话就好了!
   感觉真是学无涯,无止境啊~~~~~~~~~~~~
0 请登录后投票
   发表时间:2004-05-15  
hijack 写道
既然有saveOrUpdate的智能处理,那么干吗还要有update和save这两个函数那?


save是明确说我要把这个transient object转为persistent object

update只在两个不同的session之间使用,且我明确知道要update的是一个detatched ojbect

saveOrUpdate在两个不同的session之间使用,但我不知道是transient ojbect还是detatched ojbect

虽然saveOrUpdate可以做到save和update的both,但是因为各有各的明确语义,所以各有各的存在理由。
0 请登录后投票
   发表时间:2004-06-17  
robbin的技术的了解真的很深,思路很清晰。他讲的这些我其实也是知道的,可要我来总结这些自己就根本说不出来,这主要还是对技术的了解不够透彻!希望技术好的同行能象robbin一样多总结这些好东西!
0 请登录后投票
   发表时间:2004-07-06  
最近正在设计新项目的程序架构,看了Robbin的文章,真是有“提壶灌顶”的感觉。相信有Hibernate大师的指定,新项目成功指日可待。
0 请登录后投票
   发表时间:2004-07-18  
<generator class="assigned"/>情况下,根据id的值与unsaved-value相对比,让saveOrUpdate()来决定是SQL insert还是SQL update就出了问题!

这时需要根据具体逻辑明确指定使用save()还是update()。

补充一下:上述的持久类中没有使用version/timestamp。

我想,当持久类不得不使用<generator class="assigned"/>来管理id时,在持久类中使用version/timestamp可能是个不赖的方案,这样就可以使用saveOrUpdate()这个比较方便的方法。我准备做个例子证实这个想法(应该没问题吧),做好后再把确切的结论公布出来。
0 请登录后投票
   发表时间:2004-07-18  
引用

在<generator class="assigned"/>情况下,根据id的值与unsaved-value相对比,让saveOrUpdate()来决定是SQL insert还是SQL update就出了问题!

这时需要根据具体逻辑明确指定使用save()还是update()。

我想,当持久类不得不使用<generator class="assigned"/>来管理id时,在持久类中使用version/timestamp可能是个不赖的方案,这样就可以使用saveOrUpdate()这个比较方便的方法。

我有个问题,有这样的持久类一定要使用assigned嘛?Hibernate提供了那么多好的方式,为什么一定要用assigned?
0 请登录后投票
   发表时间:2004-07-19  
引用
我有个问题,有这样的持久类一定要使用assigned嘛?Hibernate提供了那么多好的方式,为什么一定要用assigned?

Hibernate的确提供了那么多好的方式,但是它还是提供了assigned方式,为的是要适应应用的多种情况。比如,一些遗留数据库,某种原因需要one-to-one的两张表的id是同一个值等等。

昨天夜间,我已经用实例证实了我原来的想法:在assigned情况下,由于id是通过应用程序赋值的,因此saveOrUpdate()无法使用id来判定最后是调用save()还是update()。但是可以通过一个version/timestamp属性让saveOrUpdate()对对象实例的新旧进行判定。

我用的是timestamp,Hibernate自动维护它的取值。不过,所赋值的时间只到秒级没有毫秒级。不知有什么办法让Hibernate管理的timestamp到毫秒级?
0 请登录后投票
   发表时间:2004-11-01  
让我忍不住说声:“太好了!!!!!!”
0 请登录后投票
   发表时间:2006-11-06  
2004年的帖子啊,呵呵,还是很有用
0 请登录后投票
   发表时间:2006-11-06  
一个PO有三种状态?
为啥有的资料把实体对象分成PO DO TO ?
你的文章中的PO是实体对象吧
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics