Spring有3种典型的嵌套事务传播: REQUIRED , NEW 和 NESTED . 隔离级别类型总是根据并发事务来描述。但嵌套的情况呢?从内到外和从外到外的默认可见性是什么?设置隔离级别对这两者有何影响?
REQUIRED
NEW
NESTED
编辑:我指的不是实际的sql查询,而是持久性上下文。我的意思是,如果我创建了一个资源并在嵌套事务模型的另一部分中读取它,那么无论它是否实际被持久化,我都会看到它的更改吗?一个很好的例子是执行使用存储库.save, 存储库.find... 等
内部事务和外部事务之间没有隔离。它存在的唯一原因是保存点。这件事只允许您回滚内部事务,而不回滚外部事务。 Documentation 说:
这样的部分回滚让 内部事务作用域触发其作用域的回滚,其中 外部事务能够继续物理事务 通常映射到JDBC保存点,因此它只适用于JDBC DataSourceTransactionManager .
DataSourceTransactionManager
升级版: find :
事务隔离级别。仅适用于传播设置 REQUIRED 或 REQUIRES_NEW
REQUIRES_NEW