Hibernate saveOrUpdate方法的坑

a short description of the bug

方法初始,从DB中查出一个Model。然后中间有一段其他的代码,需要一定时间执行完,这期间改变了Model的某些值。最后想更新这个Model到数据库,于是使用了saveOrUpdate方法。

这引发的bug是,在另外一个地方,执行了删除这个Model的操作,这个删除操作在上面查出Model之后,调用saveOrUpdate方法之前。于是这条本该删除的记录被重新插入了数据库。

the fix

改为调用update方法

the lession i learned
  1. 别因为别人跟你描述这个问题多么难定位,就害怕了,就自己也觉得有多难了,就像复杂了。别人给你一个bug,他描述这个bug很难,但是我依然将这个bug当成我一个清白的全新的bug去解决,和别人描述它多难无关。
  2. 见到了一种出问题的模式,以后会尽量不出这样的问题,或者出了之后能快速定位。
  3. 一开始我修复这个bug的时候,做了另外一种假设:某中情况,比如Hibernate的锁的问题,导致了删除操作没成功也没报错。这里我学到的一课是,要提出产生bug的假设,但是不要一定认为就一定是这个假设导致的这个问题,要保持开放的心,这个问题很可能是这个原因,但也很可能是别的原因导致的。
  4. 这个问题是我求助于别人帮忙定位到的,需要帮助的时候要求助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值