Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我是 JPA 的新手。我归结为这个注释@Version。在此注释的文档中,它说:
@Version
“此注解指定实体类的版本字段或属性,作为其乐观锁值。版本用于确保执行合并操作时的完整性和乐观并发控制。”
乐观锁是什么意思,它实际上与这个注解有什么关系?谢谢
长话短说...
带有注释字段的实体的每条记录@Version都标记有类似 SVN 中的版本。每当通过提交(和刷新!)事务更新实体时,检查确保您当前实体的版本和数据库中的条目匹配。此检查失败会导致OptimisticLockException, 因为在当前操作之前有人对该注册表进行了更改。
OptimisticLockException
乐观是基于以下概念
“我不需要锁定这个条目,没有人会碰它”
而悲观锁实际上锁定了给定条目上的某些操作(如 READ 或 WRITE),假设
“有人会在我工作时尝试更新此实体”