2011-09-27 94 views

回答

13

当你想实施Optimistic concurrency control时,使用NHibernate Version。如果不启用乐观并发控制并锁定您的应用程序将使用“上次提交赢”策略。如果两个事务大致同时修改同一个对象,则用户可能会遇到丢失的更新。更合适的策略被称为“第一次承诺获胜”。在这种情况下,第二笔交易将失败,并显示如下所示的错误:有人已经对您要提交的数据进行了 修改。您一直在使用陈旧的 数据。请用新数据重新开始对话。

Java Persistence with Hibernate

Hibernate提供自动版本。每个实体实例都有一个 版本,可以是数字或时间戳。 Hibernate在修改对象的版本时增加 ,自动比较版本 ,并在检测到冲突时引发异常。因此,您将 将此版本属性添加到您的所有持久实体类中,以启用乐观锁定为 。 ...版本号只是一个计数器值 - 它没有任何有用的语义 值。 Hibernate应用程序使用实体表上的附加列。 请记住,访问相同数据库的所有其他应用程序可能会(也可能应该)执行乐观版本控制,并使用同一版本的 版本列。

+0

感谢您的解释。 –