我正在阅读以下有关休眠乐观锁定的博客。我打算将其与休眠一起使用。但是,我有一个担忧。我们有java代码和c++代码,它们都连接到一个数据库。虽然,Java代码可以使用休眠模式来实现乐观锁定,但我想使C++代码做同样的事情。另外,C++代码正在使用一些旧代码。

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

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

任何建议表示赞赏。

谢谢
巴拉

最佳答案

确切地说,您的意思不是乐观锁定,而是乐观并发(无锁定)。
为版本使用时间戳仅是为了支持旧数据库,因为现代数据库(至少在理论上)可以比存储时间戳的准确性更快。

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

  • 插入时:将版本设置为1
  • 在更新和删除时:将版本增加1并在每个sql语句后面附加“where version = @ version”。返回更改的记录数。当更改的记录数与预期的数不同时,引发StaleObjectStateException。

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

    09-11 19:42