Grails锁定级别



我是Grails和Goovy的新手。我已经查看了Grails框架文档以及关于乐观锁定和悲观锁定的讨论

从文档中可以清楚地看到:

  • Grails默认使用乐观锁定。

  • 乐观锁定可以关闭(通过使用version=false)

  • 如果您关闭乐观锁定并且关心并发更新时丢失的数据,那么您必须启用悲观锁定(通过使用lock()方法)

我的问题:

  • 似乎有3种模式。两个显式命名:乐观和悲观,另一个隐含的-你已经覆盖了乐观,但没有启用悲观。这是正确的吗?

  • 如果正确-这种"中间"状态被称为什么,是否有任何合法的用途?(问这个问题的原因是我正在审查某人的代码,有很多使用这种"中间"状态,他们没有问,没有记录它等....).

我认为如果你关闭版本控制,你基本上关闭了锁检查。因此,第三种状态基本上是无版本控制=>所有写入都通过,没有检测到冲突。

选自'Programming Grails'中的Hibernate章节-

Grails默认为所有域类启用乐观锁定,一般情况下不应该更改。但是,如果您需要这样做,例如,当映射到遗留数据库或未更新的表时,因此没有并发编辑的风险,您可以使用version false禁用它。

"乐观"one_answers"悲观"不一定是全局模式。你可以用一种方式访问一个对象,用另一种方式访问另一个对象。

首先,这是Marc Palmer最近(2012年11月)写的一篇非常好的文章:GORM和Hibernate的错误乐观。它的主要结论是,它很复杂,而且Grails并不能很好地处理开箱即用的并发性。除非你真正理解Hibernate是如何在数据库之上工作的,以及Grails是如何在Hibernate之上工作的,否则你真的会丢失数据或者在随机的地方得到奇怪的异常。

最新更新