hibernate事务场景持久化操作区别

hibernate对象的三种状态:


其中 get、save、update、delete、saveOrUpdate操作都是顾名思义的方法。

load、persist、merge、saveOrUpdate是hibernate作者新增的几个方法,功能和前面几个相似,但是却又有不同的意义。


在有事务的场景下处理持久化操作:

一、load 和 get 区别

1)load只有在需要用到查询对象时才会发出SQL语句,返回的是代理对象。而get方法则是直接查询发出SQL语句。

2)如果查询一个ID不存在的对象,load方法抛出ObjectNotFoundException,get方法返回null。


二、persist 和 save 区别

1) persist无返回值,save返回id。


三、update 和 merge 区别

1)merge的对象如果不是持久化状态,会先发出SQL查询对象,如果有需要更新才会执行更新SQL。而update是直接执行更新SQL。

2)如果对象不是持久化状态且数据库不存在ID记录,merge会新增记录,update会报错也会执行SQL。


四、merge 和 saveOrUpdate区别

1)saveOrUpdate无返回值,merge有返回值。

2)如果对象不是持久化状态,merge会先发出查询,而saveOrUpdate直接执行SQL 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值