hibernate-悲观锁、乐观锁-22

在hibernate设定了read-commited的隔离级别情况下,可能会出现不可重复读或者幻读(这个目前不考虑,只考虑更新的场景)的情况,但可能通过设定悲观锁和乐观锁避免这些情况。

两种方式解决不可重复读:

悲观锁

给要改的数据加把锁,其他的事务不能动;它主要依赖数据库,在hibernate中,一般LockMode只设置upgrade,代码如下:

// 这样写转成的sql语句会变成...for  update
Group g1 = (Group) s.load(Group.class,1, LockMode.UPGRADE);

乐观锁

给某条记录设置一个version字段,有人改过,version+1
事务在更新的时候检查一下version字段和它取出数据时候的version字段是否相同即可

//  在entity中增加一个字段version
private int version;
@version
pulic getVersion(){
return this.version;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值