spring service事务传播
2016-04-01 10:36
363 查看
spring定义的事务行为有以下几种:
REQUIRED--支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。
SUPPORTS--支持当前事务,如果当前没有事务,就以非事务方式执行。
MANDATORY--支持当前事务,如果当前没有事务,就抛出异常。
REQUIRES_NEW--新建事务,如果当前存在事务,把当前事务挂起。
NOT_SUPPORTED--以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
NEVER--以非事务方式执行,如果当前存在事务,则抛出异常。
NESTED--如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与PROPAGATION_REQUIRED类似的操作。
事务传播指service方法调用另一个service方式时,被调用方法的事务行为。这种行为分为两种调用方式来区分:
1.service内部方法间调用:
被调用方法设定的事务行为将会失效,事务行为由最外层方法设置的事务行为控制。
2.一个service调用另一个service的方法
当两个service方法不属于同一个事务时,被调用方法出现的异常时不会导致外部方法事务回滚,但会使外部方法执行出现异常(可选择是否捕获);如果是属于同一个事务,外部方法捕获异常将会导致被调用方法不回滚。
REQUIRED--支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。
SUPPORTS--支持当前事务,如果当前没有事务,就以非事务方式执行。
MANDATORY--支持当前事务,如果当前没有事务,就抛出异常。
REQUIRES_NEW--新建事务,如果当前存在事务,把当前事务挂起。
NOT_SUPPORTED--以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
NEVER--以非事务方式执行,如果当前存在事务,则抛出异常。
NESTED--如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与PROPAGATION_REQUIRED类似的操作。
事务传播指service方法调用另一个service方式时,被调用方法的事务行为。这种行为分为两种调用方式来区分:
1.service内部方法间调用:
被调用方法设定的事务行为将会失效,事务行为由最外层方法设置的事务行为控制。
2.一个service调用另一个service的方法
当两个service方法不属于同一个事务时,被调用方法出现的异常时不会导致外部方法事务回滚,但会使外部方法执行出现异常(可选择是否捕获);如果是属于同一个事务,外部方法捕获异常将会导致被调用方法不回滚。
相关文章推荐
- SQL Server误区30日谈 第1天 正在运行的事务在服务器故障转移后继续执行
- 浅析SQL Server中包含事务的存储过程
- Mysql中的事务是什么如何使用
- MySql的事务使用与示例详解
- C#分布式事务的超时处理实例分析
- C#中的事务用法实例分析
- SQL Server的事务操作隔离模式介绍
- MySQL中事务概念的简洁学习教程
- C#处理Access中事务的方法
- oracle 合并查询 事务 sql函数小知识学习
- sql不常用函数总结以及事务,增加,删除触发器
- mysql的XA事务恢复过程详解
- 在Mysql存储过程中使用事务实例
- mysql存储过程事务管理简析
- php+mysql事务rollback&commit示例
- PHP中的事务使用实例
- SQLServer存储过程中事务的使用方法
- 在Java的JDBC使用中设置事务回滚的保存点的方法
- PHP使用Mysql事务实例解析
- MySql事务无法回滚的原因有哪些