何时使用Nhibernate <version>?

TJ.*_*TJ. 8 nhibernate

我正在查看关于NHibernate并发的ayende博客http://ayende.com/blog/3946/nhibernate-mapping-concurrency,我还不太清楚何时使用.看起来它是解决StaleObjectException的解决方案.

任何人都可以向我解释你会使用什么情况以及为什么?

谢谢.

Dmi*_*try 14

当您想要实现Optimistic并发控制时,使用NHibernate Version.如果没有启用乐观并发控制并锁定您的应用程序将使用"上次提交获胜"策略.如果两个事务在大致相同的时间修改同一个对象,则您的用户可能会遇到丢失的更新.更合适的策略称为"First commit wins".在这种情况下,第二个事务将失败并出现一个错误,例如:某人已经提交了对您要提交的数据的修改.你一直在处理过时的数据.请使用最新数据重新开始对话.

Java Persistence with Hibernate:

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