5

我是 JPA 的新手。我归结为这个注释@Version。在此注释的文档中,它说:

“此注解指定实体类的版本字段或属性,作为其乐观锁值。版本用于确保执行合并操作时的完整性和乐观并发控制。”

乐观锁是什么意思,它实际上与这个注解有什么关系?谢谢

4

1 回答 1

5

长话短说...

带有注释字段的实体的每条记录@Version都标记有类似 SVN 中的版本。每当通过提交(和刷新!)事务更新实体时,检查确保您当前实体的版本和数据库中的条目匹配。此检查失败会导致OptimisticLockException, 因为在当前操作之前有人对该注册表进行了更改。

乐观是基于以下概念

“我不需要锁定这个条目,没有人会碰它”

而悲观锁实际上锁定了给定条目上的某些操作(如 READ 或 WRITE),假设

“有人会在我工作时尝试更新此实体”

于 2013-02-12T14:48:00.907 回答