Java LockModeType.悲观_是写入LockResultRows还是写入整个表?

Java LockModeType.悲观_是写入LockResultRows还是写入整个表?,java,oracle,spring-boot,jpa,Java,Oracle,Spring Boot,Jpa,在搜索了一段时间后,我放弃了,因为我在任何地方都找不到这个答案,所以我在这里尝试 我正在使用SpringBoot和Crudepository从oracle数据库中获取实体。 但是,我不确定在@Transaction中调用的这段代码是否会锁定我的整个表,或者仅仅锁定FindAllByStatus和CreatedBetween返回的结果实体 @Repository public interface MyRepository extends CrudRepository<MyEntity, Lo

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

我正在使用SpringBoot和Crudepository从oracle数据库中获取实体。 但是,我不确定在
@Transaction
中调用的这段代码是否会锁定我的整个表,或者仅仅锁定
FindAllByStatus和CreatedBetween
返回的结果实体

@Repository
public interface MyRepository extends CrudRepository<MyEntity, Long> {
    @Lock(LockModeType.PESSIMISTIC_WRITE)
    List<MyEntity> findAllByStatusAndCreatedBetween(Status status, Date from, Date to);
}
@存储库
公共接口MyRepository扩展了Crudepository{
@锁(锁模式类型。悲观写入)
列出FindAllByStatus和CreatedBeween(状态状态、日期、开始日期和结束日期);
}

LockModeType.悲观\u WRITE在内部执行select for update语句

SELECT FOR UPDATE将锁定行和任何关联的索引项,就像为这些行发出UPDATE语句一样。其他事务被阻止更新这些行,无法执行选择。。。锁定在共享模式下,或从某些事务隔离级别读取数据。一致读取忽略在读取视图中存在的记录上设置的任何锁。(无法锁定记录的旧版本;可以通过在记录的内存副本上应用撤消日志来重建旧版本。)

请查收