我是JPA的新手。我来到这个注释@Version
。
在这个注释的文档中,它说:
“此批注指定版本字段或属性 作为其乐观锁定值的实体类。 该版本用于确保执行时的完整性 合并操作和乐观并发控制。 “
乐观锁是什么意思以及它与这个注释实际上有什么关系? 感谢
答案 0 :(得分:5)
长话短说......
具有注释为@Version
的字段的实体的每个记录都标记有SVN中的版本。每当通过提交(和刷新!)事务来更新实体时,检查都会确保当前实体的版本和数据库中的条目匹配。此检查失败会导致OptimisticLockException
,因为有人在当前操作之前对该注册表进行了更改。
乐观基于
的概念“我不需要锁定此条目,没有人会触摸它”
而悲观锁实际上锁定给定条目上的某些操作(如READ或WRITE)假设
“有人会在我工作时尝试更新此实体”