hibernate丢失更新
Posted 人生不断学习
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hibernate丢失更新相关的知识,希望对你有一定的参考价值。
如果多个线程操作基于同一个查询结构对表中的记录进行修改,那么后修改的记录将会覆盖前面修改的记录,前面的修改就丢失掉了,这就叫做更新丢失。
Serializable可以防止更新丢失问题的发生。其他的三个隔离级别(Read uncommitted isolation、Read committed isolation、Repeatable read isolation)都有可能发生更新丢失问题。
Serializable虽然可以防止更新丢失,但是效率太低,通常数据库不会用这个隔离级别,所以我们需要其他的机制来防止更新丢失。解决办法:
悲观锁:使用session.get(Customer.class, 1,LockMode.UPGRADE); 方法
乐观锁:在对应的JavaBean中添加一个属性,名称可以是任意的。例如:private Integer version; 提供get和set方法。在映射的配置文件中,提供<version name="version"/>标签即可。
以上是关于hibernate丢失更新的主要内容,如果未能解决你的问题,请参考以下文章
Hibernate逍遥游记-第15章处理并发问题-001事务并发问题及隔离机制介绍