gpt4 book ai didi

java - 当带有@Version 注释字段或属性的实体时,乐观锁如何自动启用?

转载 作者:行者123 更新时间:2023-11-29 01:53:46 25 4
gpt4 key购买 nike

最近在研究数据库事务,引用一篇文章如下

JPA 通过@Version 注解提供对行版本控制的自动支持。当您拥有带有@Version 注解字段或属性的实体时,将自动启用乐观锁定。

我的理解是,数据库隔离级别策略是使用不同的锁来维护的,例如

  1. 未提交读:使用排他写锁实现
  2. 已提交读:使用共享读锁和独占写锁实现。

等等。因此,事务隔离是通过不同的锁定实现的,我猜是通过使用悲观锁定实现的。

我的问题是,当一个字段被声明为带有@Version 注释时,它是否会覆盖底层默认隔离级别并发生乐观锁定?

最佳答案

不,它们是不同的东西。默认情况下,隔离级别配置为 read-commited,因此在事务提交之前无法读取任何更改。

如果您决定通过@Version 使用乐观锁定,您根本不会更改隔离级别,但假定您要使用read-commited隔离级别,因为我认为在使用乐观锁定时使用 read-uncommitedread-serialized 没有意义,但可以。

您在创建事务时定义隔离级别,通常您指定只读模式、隔离级别、传播模式和事务名称。

乐观锁定由 ORM 基础结构控制,在持久化时处理对象的正确数字版本。所以,它们是不同的东西。

希望对您有所帮助!

关于java - 当带有@Version 注释字段或属性的实体时,乐观锁如何自动启用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34429744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com