悲观锁、乐观锁

悲观锁:假设会发生并发冲突,屏蔽一切可能违反数据完整性的操作。

乐观锁:假设并发不会发生冲突,只在提交操作时检查是否违反数据完整性。乐观锁不能解决脏读的问题。

hibernate对于乐观锁的实现:在会产生冲突的字段加上annotation @version,hibernate在更新时自动检查该字段

hibernate对于悲观锁的实现:查询的时候加上updlock选项,但是会严重影响性能,对于其它更新用户会产生阻塞。

结论:对于并发不大且不允许脏读的应用,可以使用悲观锁,对于并发量非常大的应用可以采用乐观锁的机制。

原文地址:https://www.cnblogs.com/badoumi/p/5281682.html