hibernate_悲观锁乐观锁

1.多个事务会出现的错误情况

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

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

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

 

2.悲观锁 乐观锁

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

 

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

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

 

你可能感兴趣的:(Hibernate)