默认情况下,在Hibernate中乐观锁定

lor*_*ars 13 hibernate optimistic-locking

我有一个关于Hibernate中乐观锁定的问题.我试图深入了解Hibernate的乐观锁定,但我有一个疑问.Hibernate使用版本方法(整数或时间戳)来实现乐观锁定.要配置,您可以使用@Version注释(或xml配置)并创建版本属性.另一个选项是使用optimistic-lock ="all"属性进行配置而不进行版本控制.

我的问题是你没有定义任何版本控制属性,也没有指定一个乐观锁属性,在这种情况下哪个策略使用Hibernate?Pessimistc Locking我很确定不行,所以我认为这是乐观锁定但不知道如何.

非常感谢您的关注.

axt*_*avt 39

如果不将Hibernate配置为使用乐观锁定,则根本不使用锁定.因此,在这种情况下,最后更新总是获胜.

为了说清楚,请注意Hibernate乐观锁定与DBMS事务隔离完全不同.Hibernate乐观锁定只适用于在一个事务中加载对象,修改它并稍后在另一个事务中保存它的情况.在这种情况下,乐观锁定可确保某些其他事务未在数据库之间更改该对象.但是,乐观锁定不会影响并发事务的隔离 - 因此,无论是否启用Hibernate锁定,DBMS内部用于实现事务隔离的锁定(乐观或悲观)仍然有效.