悲观锁和乐观锁

1、悲观锁:他用户企图访问或者改变你正在访问、更改的对象的概率是很高的。因此,悲观环境中,在你开始改变对象之前对象就被锁住了,直到你提交了所做的更改后才释放锁。

2、乐观锁:他用户企图访问或者改变你正在访问、更改的对象的概率是很小的。因此,乐观环境中,在你准备提交所做的更改时才将对象锁住,当你读取以及改变该对象时并不加锁。

3、悲观锁锁定的时间比乐观锁的长,所以安全性较乐观锁的高,但并发性低。 

hibernate_悲观锁乐观锁多个事务会出现的错误情况

   1)dirty read脏读  -->  读了其他事务没有提交的数据

   2)none repeatable read不可重复读  -->  在同一个事务中读两次得到不同的结果

   3)phantom read幻读  -->  在同一个事务中读两次得到不同的结果(针对插入和删除)

   为了考虑并发的效率,hibernate设置为read commited,但这样会导致上面说的“不可重复读”,这样就产生了悲观锁乐观锁的概念 

   悲观锁-->使用数据库的锁,在读出来的时候就把数据锁起来,效率较低

   乐观锁-->定义一个版本号,每次更新之前先比较一下版本,效率较高(因为它不用锁数据)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值