【问题标题】:What is optimistic lock in JPA?JPA 中的乐观锁是什么?
【发布时间】:2013-02-12 14:37:10
【问题描述】:

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

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

乐观锁是什么意思,它和这个注解有什么关系? 谢谢

【问题讨论】:

  • 查找资料under this link
  • 让每个人一次编辑相同的东西。当有人提交他们的更改时,请检查自他们开始更改后是否有其他项更改提交。如果是这样,哭吧。 (即回滚他们的更改并强制他们获取新副本)。通常涉及版本号作为跟踪变更集的一种方式。

标签: java jakarta-ee jpa


【解决方案1】:

长话短说……

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

乐观是基于

的概念

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-14
    • 2017-12-22
    • 1970-01-01
    • 1970-01-01
    • 2013-09-16
    相关资源
    最近更新 更多