LockMode OPTIMISTIC的目的是什么?

时间:2014-03-06 15:43:29

标签: java hibernate locking

根据How to do optimistic locking in hibernate,我们需要启用乐观 在hibernate中使用版本元素或版本注释进行锁定。我很清楚,直到这里。

我不确定Lock Mode Optimistic的目的是什么? 在什么样的情况下,开发人员应该使用它?

1 个答案:

答案 0 :(得分:1)

要理解为什么要进行乐观锁定,首先需要了解锁定和悲观锁定的含义。我不是hibernate专家,所以我只是告诉你,而不是专注于休眠。

当2个进程/用户更新同一个对象时,最后更新它的用户将获胜。所以你需要找到一种方法来防止这种情况发生。一种方法是悲观锁定。在这里,您将在从数据库“select for update”加载对象时锁定对象。在您的事务被提交或回滚之前,没有其他人可以“选择更新”此对象。现在问题是:当您通过hibernate加载实体时,您无法指定是否要将其加载为只读目的,或者是否要修改此对象。

所以这里有乐观的锁定。这个概念乐观地假设在大多数情况下一切都会好的。当2个进程/用户更新同一个对象时,第二个进程/用户不会获胜,但会在提交时获得异常。