http://blog.sina.com.cn/s/blog_5f53615f0100oq50.html

你有3种选择:
-----
1. 最晚提交生效---两个事务提交都成功,且第二次提交覆盖第一个的变化。没有显示错误消息。
-----
2. 最先提交生效---对话A的事务被提交,并且在对话B中提交事务的用户得到一条错误消息。用户必须获取新数据来重启对话,并再次利 用没有失效的数据完成对话的所有步骤。
-----
3. 合并冲突更新---第一个修改被提交,并且对话B中的事务在提交时终止,带有一条错误消息。但是失败的对话B用户可以选择性地应用 变化,而不是再次在对话中完成所有工作。
-----
 如果你没有启用乐观并发控制(默认情况为未启用),应用程序就会用最晚提交生效策略运行。在实践中,丢失更新的这个问题使得许多应用程序的用户很沮丧,因为他们可以发现他们的所有工作都丢失了,而没有收到任何错误消息。
 很显然,最先提交生效更有吸引力。如果对话B的应用程序的用户提交,他就获得这样一条错误消息:有人已经对你要提交的数据提交了修改。你已经使用了失效数据。请用新数据重启对话。设计和编写生成这条错误消息的应用程序,并引导用户重新开始对话,这就是你的责任了。hibernate用自动乐观锁协助你,以便每当事务试图提交在数据库中带有冲突的被更新状态的对象时,就会得到一个异常。
 合并冲突的变化,是最先提交生效的一种变形。不显示始终强制用户返回的错误消息,而是提供一个对话框,允许用户手工合并冲突的变化。这是最好的策略,因为没有工作丢失,应用程序的用户也不会因为乐观并发失败而受挫。然而,对于开发人员来说,提供一个对话框来合并变化比显示一条错误消息并强制用户重复所有的工作来得更加费时。是否使用这一策略,由你自己决定。