我正在阅读以下有关 hibernate 乐观锁定的博客。我打算将它与 hibernate 一起使用。但是,我有一个担忧。我们有java代码和c++代码,都连接到一个数据库。同时,java代码可以使用hibernate实现乐观锁,我想让c++代码做同样的事情。此外,C++ 代码使用了一些遗留代码。
http://turgaykivrak.wordpress.com/2009/05/16/72/
有文档解释hibernate是如何实现乐观锁的吗?
如有任何建议,我们将不胜感激。
谢谢
巴拉
最佳答案
准确的说,你说的不是乐观锁,而是乐观并发(没有锁)。 对版本使用时间戳只是为了支持遗留数据库,因为现代数据库(至少在理论上)可以比存储时间戳的准确性更快地工作。
使用整数版本属性非常简单:
- 插入时:将版本设置为 1
- 关于更新和删除:将版本增加 1 并将“where version=@version”附加到每个 sql 语句。返回更改的记录数。当更改的记录数与预期不同时,抛出 StaleObjectStateException。
就个人而言,我不会在非遗留情况下创建两个单独的应用程序来写入相同的数据,因为这意味着必须复制业务逻辑并且必须将更改应用于两个应用程序,而且当更改与只有一个应用程序。
关于mysql - Hibernate 乐观锁定..它是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3347546/