【整理备用】Hibernate对数据持久化的方法的区别

参考:http://topic.csdn.net/u/20090712/21/52825CC8-9F4E-4B62-ABDF-E848E74A9C17.html


最近用到Hibernate的merge()方法,和其他方法又搞混了,这次整理一下,以备以后方便查看。


Hibernate里save()、update()、saveorupdate()、merge()方法的区别:


1、save()方法,简单的说就是保存信息到数据库。

该方法用于将一个临时对象转变为持久化对象,也就是将一个新的业务实体保存到数据库中。


2、update()方法,简单的说就是更新数据库表里面的信息。

该方法用于将一个游离对象重新转变为持久化对象,也就是更新一个已经存在的业务实体到数据库中;


3、saveorupdate()方法,简单的说就是数据库里面不存在这条记录就插入,如果存在就更新。(有人说性能低下,建议少用)

该方法兼具了save()和update()方法的功能,根据传入参数的状态执行不同的操作,当为临时状态时,调用save()方法;当为持久化状态时,则直接返回;当为游离状态时,调用update()方法。

对象中如果有主键就修改,如果没有主键就保存。

  1.如果对象已经在本session中持久化了,不做任何事;
  2.如果另一个与本session关联的对象拥有相同的持久化标识(identifier),抛出一个异常;
  3.如果对象没有持久化标识(identifier)属性,对其调用save();
  4.如果对象的持久标识(identifier)表明其是一个新实例化的对象,对其调用save();
  5.如果对象是附带版本信息的(通过或) 并且版本属性的值表明其是一个新实例化的对象,save()它。


4、merge()方法,简单的说就是保存或更新信息到数据库。功能类似saveorupdate(),但又是有区别的。

该方法主要用于更新和保存实体,当实体不存在时,则执行保存操作;当实体已经存在时,则执行更新操作。


merge()方法 和saveorupdate()方法不一样,当session中某持久化对象有id相同的两个纪录时,必须用merge()方法,merge()方法会在保存之前来合并记录,不然会报错。合并记录后的动作和 saveorupdate()方法一样。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值