gpt4 book ai didi

java - LockModeType.PESSIMISTIC_WRITE 是否锁定结果行或整个表?

转载 作者:行者123 更新时间:2023-12-01 18:01:32 27 4
gpt4 key购买 nike

搜索了一段时间后,我放弃了,因为我在任何地方都找不到这个答案,所以我在这里尝试。

我正在使用 Spring Boot 和 CrudRepository 从我的 Oracle 数据库中获取实体。但是,我不确定在 @Transaction 内部调用的这段代码是否会锁定我的整个表,或者只是锁定 findAllByStatusAndCreatedBetween 返回的结果实体?

@Repository
public interface MyRepository extends CrudRepository<MyEntity, Long> {
@Lock(LockModeType.PESSIMISTIC_WRITE)
List<MyEntity> findAllByStatusAndCreatedBetween(Status status, Date from, Date to);
}

最佳答案

LockModeType.PESSIMISTIC_WRITE 内部执行 select for update 语句。

SELECT FOR UPDATE 锁定行和任何关联的索引条目,就像您为这些行发出 UPDATE 语句一样。其他事务将被阻止更新这些行、执行 SELECT ... LOCK IN SHARE MODE 或读取某些事务隔离级别中的数据。一致读取会忽略对读取 View 中存在的记录设置的任何锁定。 (旧版本的记录无法锁定;它们是通过在记录的内存副本上应用撤消日志来重建的。)

请查看https://docs.oracle.com/cd/E17952_01/mysql-5.1-en/innodb-locking-reads.html

关于java - LockModeType.PESSIMISTIC_WRITE 是否锁定结果行或整个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60618908/

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