spring,@transactional隔离在没有锁的情况下是如何工作的?

qcuzuvrc  于 2021-07-26  发布在  Java
关注(0)|答案(0)|浏览(260)

从这里了解到:https://stackoverflow.com/a/58831350/10894456 @Transactional 不会锁定在内部使用的实体上触发的行 @Transactional 方法。
我们需要使用乐观的( @Version 实体中的注解)或悲观( @Lock 在存储方法中)从 @Transactional 方法。
问题是:隔离是如何工作的 @Transactional 方法在面对任何锁的缺失?例如

@Service
public class AService {
    @Autowired
    private Repository1 repository1;

    @Autowired
    private Repository2 repository2;

    @Autowired
    private Repository3 repository3;

    @Transactional(isolation = Isolation.SERIALIZABLE)
    public Result getResult(Long id) {
        Entity1 e1 = repository1.findById(id);
        Entity2 e2 = repository2.findById(id);
        Entity3 e3 = repository3.findById(id);
        e1.setField(doSomeLogic(...)));
        e2.setField(doSomeLogic(...)));
        e3.setField(doSomeLogic(...)));
        repository1.save(e1);
        repository2.save(e2);
        repository3.save(e3);
        return Result.combine(e1,e2,e3);
    }
}

什么是使用保证

@Transactional(isolation = Isolation.SERIALIZABLE)

? 在没有任何锁定的情况下,这种保证是如何工作的?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题