Hibernate乐观锁(optimistic lock)实例详解

  • 内容
  • 评论
  • 相关

相对于悲观锁而言,乐观锁(optimistic lock)通常认为多个事务同时操作同一数据的情况很少发生,因此乐观锁不进行数据库层次上的锁定,而是基于数据版本(Version)标识实现应用程序级别上的锁定机制,这既能保证多个事务的并发操作,又能有效防止第二类丢失更新的发生。

数据版本标识是通过为数据表增加一个 version 字段实现的。增加 version 字段后,程序在读取数据时,会将版本号一同读出,之后在更新此数据时,会将此版本号加一。

在提交数据时,将现有的版本号与数据表对应记录的版本号进行对比,如果提交数据的版本号大于数据表中的版本号,则允许更新数据,否则禁止更新数据。

本节案例在《Hibernate悲观锁》教程的案例的基础上修改,演示基于 Version 乐观锁的使用。具体实现步骤如下。

1. 修改表结构

在 person 表中增加一个 version 字段,并在 version 字段插入一条数据 1,修改表结构和表中数据的 SQL 语句如下所示:

ALTER TABLE person ADD VERSION INT(10);
UPDATE person SET version = 1;
UPDATE person SET age = 20;

修改后,person 表中的数据如图 1 所示。

修改后的person表
图 1  修改后的person表

本文标题:Hibernate乐观锁(optimistic lock)实例详解

本文地址:https://www.hosteonscn.com/5817.html

评论

0条评论

发表评论

邮箱地址不会被公开。 必填项已用*标注