我使用Spring处理事务。实际上,我看到一个示例,其中我们有一个方法使用默认的transactionn方面@RequiredNew和readOnly = true在表上进行查找。
@Override
@Transactional(readOnly = true)
public E findAll(E entity) {
return repository.save(entity);
}
我的问题是为什么不这样做,有什么区别?
@Transactional(propagation = Propagation.NEVER)
@Override
public Iterable<E> findAll() {
return repository.findAll();
}
最佳答案
readOnly属性告诉Hibernate和您的数据库您不希望任何可能的更改被提交。这将在当前的休眠会话中设置FlushMode.NEVER。即使调用save()方法,数据库中也不会发生任何更改。
Propagation.NEVER,意味着Spring将以非事务方式执行该操作,如果存在事务,则将引发Exception。这样可以确保不会创建任何事务。
https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/transaction/annotation/Propagation.html
关于java - readOnly = true和TransactionType Never之间有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53942580/