@@ -976,7 +976,6 @@ BookService.java
976976``` java
977977package com.mashibing.service ;
978978
979- import com.mashibing.dao.BookDao ;
980979 import org.springframework.beans.factory.annotation.Autowired ;
981980 import org.springframework.stereotype.Service ;
982981 import org.springframework.transaction.annotation.Isolation ;
@@ -1019,7 +1018,6 @@ MulService.java
10191018``` java
10201019package com.mashibing.service ;
10211020
1022- import com.mashibing.bean.Book ;
10231021import org.springframework.beans.factory.annotation.Autowired ;
10241022import org.springframework.stereotype.Service ;
10251023import org.springframework.transaction.annotation.Transactional ;
@@ -1301,11 +1299,11 @@ public class BookService {
13011299总结:
13021300
13031301``` tex
1304- 1、事务传播级别是REQUIRED,当save ()被调用时(假定被另一类中commit()调用),如果save ()中的代码抛出异常,即便被捕获,commit()中的其他代码都会roll back
1302+ 1、事务传播级别是REQUIRED,当checkout ()被调用时(假定被另一类中commit()调用),如果checkout ()中的代码抛出异常,即便被捕获,commit()中的其他代码都会roll back
13051303
1306- 2、是REQUIRES_NEW,如果save ()中的代码抛出异常,并且被捕获,commit()中的其他代码不会roll back;如果commit()中的其他代码抛出异常,而且没有捕获,不会导致save ()回滚
1304+ 2、是REQUIRES_NEW,如果checkout ()中的代码抛出异常,并且被捕获,commit()中的其他代码不会roll back;如果commit()中的其他代码抛出异常,而且没有捕获,不会导致checkout ()回滚
13071305
1308- 3、是NESTED,如果save ()中的代码抛出异常,并且被捕获,commit()中的其他代码不会roll back;如果commit()中的其他代码抛出异常,而且没有捕获,会导致save ()回滚
1306+ 3、是NESTED,如果checkout ()中的代码抛出异常,并且被捕获,commit()中的其他代码不会roll back;如果commit()中的其他代码抛出异常,而且没有捕获,会导致checkout ()回滚
13091307
13101308 PROPAGATION_REQUIRES_NEW 启动一个新的, 不依赖于环境的 "内部" 事务. 这个事务将被完全 commited 或 rolled back 而不依赖于外部事务, 它拥有自己的隔离范围, 自己的锁, 等等. 当内部事务开始执行时, 外部事务将被挂起, 内务事务结束时, 外部事务将继续执行.
13111309 另一方面, PROPAGATION_NESTED 开始一个 "嵌套的" 事务, 它是已经存在事务的一个真正的子事务. 嵌套事务开始执行时, 它将取得一个 savepoint. 如果这个嵌套事务失败, 我们将回滚到此 savepoint. 潜套事务是外部事务的一部分, 只有外部事务结束后它才会被提交.
0 commit comments