Spring事务传播机制
事务是逻辑处理原 性的保证 段,通过使 事务控制,可以极 地避免出现逻辑处理失败导致的脏数据等问题。
事务 传播级别 定义了事务的控制范围
如果上下 中已经存在事务,那么就加 到事务中执 ,如果当前上下 中不存在事务,则新建事务执 。
若B方法抛出异常,A方法进行捕获,A会抛出异常,因为C2标志回滚,C1标志提交,产生冲突。
若B方法抛出异常,B方法内部捕获,A、B都不会回滚。
若A或B抛出异常,但没有捕获,则A、B都回滚。
A、B可操作同一行记录,因为处在同一事务中。
该级别的事务要求上下 中必须要存在事务,否则就会抛出异常!
能有效地控制上下 调 代码遗漏添加事务控制 。
如 段代码不能单独被调 执 ,但是 旦被调 ,就必须有事务包含的情况,就可以使 这个传播级别。
每次都会新建 个事务,并且同时将上下 中的事务挂起,执 当前新建事务完成以后,上下 事务恢复再执 。
若B方法抛出异常,A方法进行捕获,B方法回滚,A方法不受B异常影响。
若B方法抛出异常,B方法进行捕获,A、B都不会回滚。
若A方法抛出异常,不会影响B正常执行。
若B方法抛出异常,A、B方法都没有处理,则A、B都会回滚。
A、B不可操作同一条记录,因为处于不同事务中,会产生死锁。
如果上下 存在事务,则 持事务加 事务,如果没有事务,则使 事务的 式执 。
通常是 来处理那些并 原 性的 核 业务逻辑操作 。 应 场景较少 。
若当前上下 中存在事务,则挂起事务,执 当前逻辑,结束后恢复上下 的事务。
可以将事务范围尽可能地缩 ,建议优先使用代码隔离的方式进行
个事务越 ,它存在的 险也就越多
要求上下 中不能存在事务, 旦有事务,就抛出runtime异
如果当前存在事务,则嵌套(savepoint)在当前事务中执行。如果当前没有事务,则新建一个事务,类似REQUIRE_NEW。
2023-07-25 广告