我在看关于NHibernate并发性的ayende博客http://ayende.com/blog/3946/nhibernate-mapping-concurrency,我仍然不是很清楚何时使用。它似乎是解决StaleObjectException的解决方案。何时使用Nhibernate <version>?
任何人都可以向我解释在什么情况下你会使用一个为什么?
谢谢。
我在看关于NHibernate并发性的ayende博客http://ayende.com/blog/3946/nhibernate-mapping-concurrency,我仍然不是很清楚何时使用。它似乎是解决StaleObjectException的解决方案。何时使用Nhibernate <version>?
任何人都可以向我解释在什么情况下你会使用一个为什么?
谢谢。
当你想实施Optimistic concurrency control时,使用NHibernate Version。如果不启用乐观并发控制并锁定您的应用程序将使用“上次提交赢”策略。如果两个事务大致同时修改同一个对象,则用户可能会遇到丢失的更新。更合适的策略被称为“第一次承诺获胜”。在这种情况下,第二笔交易将失败,并显示如下所示的错误:有人已经对您要提交的数据进行了 修改。您一直在使用陈旧的 数据。请用新数据重新开始对话。
从Java Persistence with Hibernate:
Hibernate提供自动版本。每个实体实例都有一个 版本,可以是数字或时间戳。 Hibernate在修改对象的版本时增加 ,自动比较版本 ,并在检测到冲突时引发异常。因此,您将 将此版本属性添加到您的所有持久实体类中,以启用乐观锁定为 。 ...版本号只是一个计数器值 - 它没有任何有用的语义 值。 Hibernate应用程序使用实体表上的附加列。 请记住,访问相同数据库的所有其他应用程序可能会(也可能应该)执行乐观版本控制,并使用同一版本的 版本列。
感谢您的解释。 –