嵌套事务(而不是并发事务)的默认隔离级别是多少?

Whi*_*cal 6 java spring jta spring-transactions spring-data-jpa

春有3间典型的嵌套事务的传播:REQUIRED,NEWNESTED.隔离级别类型始终根据并发事务进行描述.但是嵌套案例怎么样?从内到外的默认可见性是什么,另一种方式是什么?设置隔离级别如何影响?

是否有任何经验法则,例如"外部事务总是看到来自内部无法隔离或传播类型的变化"或"内部只能在设置为read_uncommited时看到外部变化".或者根据需要设置等等.?

编辑:我不是在谈论实际的SQL查询,而是持久化上下文.我的意思是,如果我创建一个资源并在嵌套事务模型的另一部分中读取它,我是否会看到更改,无论它是否实际持久存在?一个很好的例子是一个事务工作流,它执行使用repository.save,repository.find等的事务方法

Ale*_*kov 2

内部事务和外部事务之间没有隔离。它存在的唯一原因是保存点。那东西只是让你回滚内部事务而不回滚外部事务。文档说:

\n\n
\n

PROPAGATION_NESTED 使用具有多个可以回滚到的保存点的单个物理事务。此类部分回滚让内部事务范围触发其范围的回滚,而外部事务能够继续物理事务,尽管某些操作已回滚。此设置通常映射到 JDBC 保存点,因此它仅适用于 JDBC 资源事务。参见 Spring\xe2\x80\x99sDataSourceTransactionManager

\n
\n\n

UPD: \n您还可以找到

\n\n
\n

事务隔离级别。仅适用于或的传播设置\ REQUIREDnREQUIRES_NEW

\n
\n