hibernate为什么用了saveOrUpdate该怎么用

save的话是不需要给数据库传ID的可是如果想要UPDATE的话不是要传ID吗该怎么做才能用saveorupdate呢... save的话是不需要给数据库传ID的 可是如果想要UPDATE的话 不是要传ID吗 该怎么做才能用saveorupdate呢 展开
 我来答
ymiqplgao
2011-09-18 · TA获得超过646个赞
知道小有建树答主
回答量:512
采纳率:0%
帮助的人:389万
展开全部
楼主看下Hibernatet中的三种对象。
临时对象,也就是不在Session里边,没有持久化标识,数据库中也没有对应的这个数据的记录,此时才能用save;
持久化对象,在Session里边的,拥有持久化标识OID,此时的数据的内容只要修改,(ID)不能变,会引起数据此对象和数据库的联动,这是Hibernate通过同步来实现的。具体怎么实现,可参考对象的生命周期,和垃圾回收有一丝关系。此时的数据只要修改就算不使用saveOrUpdate也会达到更新数据库的效果。
还有一种对象:脱管对象。此对象拥有持久化标识,也就是说数据库中有这个对象对应的数据记录,但是Session关闭了,也就是说Session的缓存中没有这个对象了。不受Session的管理了。此时如果修改了这个对象的属性,不会了生联动,也就是数据不会反映到数据库中去,除非调用saveOrUpdate()方法,并且commit后,此对象又成了持久化对象。
呵呵,看下Hibernate的三种对象类型,相信楼主会明白。
dadaozhijian10
推荐于2018-02-28 · TA获得超过376个赞
知道答主
回答量:231
采纳率:0%
帮助的人:157万
展开全部
save是返回插入数据的主见的,而saveOrUpdate是void
save方法更适用与确定了是要插入,而且需要得到插入数据的主键
而saveOrUpdate更倾向于不缺定是插入还是更新,而且你不需要得到他的主键

另一方面,如果你无法确定你要插入或更新的对象是不是持久态或游离态时。如果你save一个持久态或更新一个游离态,这都是有问题的,此时你就要用到saveOrUpdate

总体来说,如果你能确定你即将操作对象的状态,则不需要用saveOrUpdate
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
du瓶邪
推荐于2016-10-13 · TA获得超过2.4万个赞
知道大有可为答主
回答量:1.7万
采纳率:100%
帮助的人:2815万
展开全部
session的saveOrUpdate是根据对象的状态(瞬时,持久,托管)对对象进行save或update操作的,我猜楼主肯定是刚刚学习到这一块,因为实际项目中,这个方法用的应该很少(我猜的).
当对象的状态为瞬时状态时,对对象进行save操作
当对象的状态为持久或托管状态时,对对象进行update操作
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
花浓花浅
2011-09-18 · TA获得超过348个赞
知道答主
回答量:104
采纳率:0%
帮助的人:46.2万
展开全部
saveOrUpdate方法是自动匹配,根据你的执行语句选择save或者update
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式