Hibernate乐观锁定..它有效吗?

时间:2010-07-27 20:13:49

标签: mysql database nhibernate hibernate

我正在阅读以下关于hibernate乐观锁定的博客。我计划在hibernate中使用它。但是,我有一个问题。我们有java代码和c ++代码,都连接到一个数据库。虽然,java代码可以使用hibernate来实现乐观锁定,但我想让c ++代码做同样的事情。此外,c ++代码正在使用一些遗留代码。

http://turgaykivrak.wordpress.com/2009/05/16/72/

是否有文档解释了hibernate如何实现乐观锁定?

任何建议都表示赞赏。

谢谢你 巴拉

1 个答案:

答案 0 :(得分:11)

准确地说,你不是指乐观锁定,而是乐观并发(没有锁定)。 使用版本的时间戳仅用于遗留数据库支持,因为现代数据库(至少在理论上)可以比存储时间戳的准确性更快地工作。

使用整数版本属性非常简单:

  • 在插入时:将版本设置为1
  • 更新和删除:使用1增加版本并将“where version = @ version”附加到每个sql状态。返回已更改记录的数量。当更改的记录数与预期不同时,抛出StaleObjectStateException。

就个人而言,我不会创建两个单独的应用程序在非遗留情况下编写相同的数据,因为这意味着必须复制业务逻辑,并且必须将更改应用于两个应用程序,当更改与只有一个应用程序。