Hibernate之乐观锁和悲观锁

Hibernate之乐观锁和悲观锁

乐观锁和悲观锁用于处理数据的并发访问。Hibernate有一个特殊的属性——版本属性。版本属性不参与业务逻辑,只用来保证不会有2个线程同时对数据库进行读写。版本属性是乐观锁的一种实现。

悲观锁

嘉定其他用户企图访问或者改变正在访问、更改的对象的概率是很高的,因此在悲观锁中,在开始改变此对象前必须锁住对象,并且指导你提交了所做的操作才释放锁。

Hibernate的悲观锁用SQL语句实现。

乐观锁

乐观锁通过Version列保存当前数据的版本,如果程序修改了数据,就将版本+1,反过来如果版本发生了变化,说明数据被修改了。程序保存数据时会检查数据的Version列,如果Version列已经发生了变化,程序会重新读取、修改和保存数据。

该机制不需要锁定数据航,允许多线程同时访问同一数据,效率高,因此称之为乐观锁。

乐观锁配置

只需要指定实体类的Version列即可。

@Version

猜你喜欢

转载自aoyouzi.iteye.com/blog/2040235