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

Boo*_*ean 8 mysql database nhibernate hibernate

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

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

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

任何建议表示赞赏.

谢谢
Bala

Pac*_*aco 11

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

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

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

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