Hibernate里save()、update()、saveOrUpdate()、merge()区别?

zyzx1986 2009-07-12 09:54:19
hibernate 太强大了,一个对数据的持久化都这么多方法,
小弟不晓得他们之间有什么区别?各位大哥帮忙解解惑。

...全文
2138 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
a8856225a 2010-08-13
  • 打赏
  • 举报
回复
Daly罗 2009-07-13
  • 打赏
  • 举报
回复
saveOrUpdate()作用:
  1.如果对象已经在本session中持久化了,不做任何事;
  2.如果另一个与本session关联的对象拥有相同的持久化标识(identifier),抛出一个异常;
  3.如果对象没有持久化标识(identifier)属性,对其调用save();
  4.如果对象的持久标识(identifier)表明其是一个新实例化的对象,对其调用save();
  5.如果对象是附带版本信息的(通过或) 并且版本属性的值表明其是一个新实例化的对象,save()它.

通俗一点也就和一楼差不多
bolink5 2009-07-13
  • 打赏
  • 举报
回复
后改成 好
bolink5 2009-07-13
  • 打赏
  • 举报
回复
save() 是保存,相当于jdbc的insert
update 就是更新
saveOrUpdate() 是数据库里面不存在这条记录就插入,有的话就更新。个人建议最后别用,性能很底下。
ZhaoHuiZiXin 2009-07-13
  • 打赏
  • 举报
回复
1. save() 保存数据
2. update()更新数据
3. saveOrUpdate()保存或更新数据: 对象中如果有主键就修改, 如果没有主键就保存.
4. merge(): 他说的就是如果没有该条记录,则会被创建; 如果有该条记录,但内容有变,则会被修改; 相当于save or update.
merge 和saveOrUpdate不一样,当session中某持久化对象有id相同的两个纪录时,必须用merge,merge会在保存之前来合并记录,不然会报错。合并记录后的动作和 saveOrUpdate一样。
hyhymn 2009-07-13
  • 打赏
  • 举报
回复
学习。
ouwarmth 2009-07-13
  • 打赏
  • 举报
回复
save()方法用于将一个临时对象转变为持久化对象,也就是将一个新的业务实体保存到数据库中;
update()方法用于将一个游离对象重新转变为持久化对象,也就是更新一个已经存在的业务实体到数据库中;
saveOrUpdate()兼具了save()和update()方法的功能,该方法根据传入参数的状态执行不同的操作,当为临时状态时,调用save()方法;当为持久化状态时,则直接返回;当为游离状态时,调用update()方法。
merge()方法主要用于更新和保存实体,当实体不存在是,则执行保存操作,当实体已经存在时,执行更新操作,其实同saveOrUpdate()的功能是类似的。
zi_0_feng 2009-07-13
  • 打赏
  • 举报
回复
有人知道 save() 和 merge() 的区别吗?

62,621

社区成员

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

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