Spring事务的传播行为 @Transactional(转)
2015-11-29 13:44
507 查看
Spring事务的传播行为
在service类前加上@Transactional,声明这个service所有方法需要事务管理。每一个业务方法开始时都会打开一个事务。
Spring默认情况下会对运行期例外(RunTimeException)进行事务回滚。这个例外是unchecked
如果遇到checked意外就不回滚。
如何改变默认规则:
1 让checked例外也回滚:在整个方法前加上 @Transactional(rollbackFor=Exception.class)
2 让unchecked例外不回滚: @Transactional(notRollbackFor=RunTimeException.class)
3 不需要事务管理的(只查询的)方法:@Transactional(propagation=Propagation.NOT_SUPPORTED)
注意: 如果异常被try{}catch{}了,事务就不回滚了,如果想让事务回滚必须再往外抛try{}catch{throw Exception}。
在service类前加上@Transactional,声明这个service所有方法需要事务管理。每一个业务方法开始时都会打开一个事务。
Spring默认情况下会对运行期例外(RunTimeException)进行事务回滚。这个例外是unchecked
如果遇到checked意外就不回滚。
如何改变默认规则:
1 让checked例外也回滚:在整个方法前加上 @Transactional(rollbackFor=Exception.class)
2 让unchecked例外不回滚: @Transactional(notRollbackFor=RunTimeException.class)
3 不需要事务管理的(只查询的)方法:@Transactional(propagation=Propagation.NOT_SUPPORTED)
注意: 如果异常被try{}catch{}了,事务就不回滚了,如果想让事务回滚必须再往外抛try{}catch{throw Exception}。
相关文章推荐
- SpringMVC_入门程序
- Spring MVC 中 HandlerInterceptorAdapter的使用
- Spring中Bean的生命周期
- Java - 认识 JDBC
- 1.交通聚类:编辑距离 (Levenshtein距离)Java实现
- java中的堆、栈和常量池
- cassandra client in Java——cassandra总结(五)
- 安装TestNG在eclipse中的插件
- Java集合概述
- Java中的多态(polymorphism)和动态绑定(dynamic binding)
- Java-泛型
- java继承深入解析
- Java-文件操作与随机访问文件
- 将Android studio 项目导入eclipse的学习过程
- Java 字节流
- Java 集合框架
- Java进阶之路
- Java- Hibernate 多对一关系映射
- acm2028
- Java-Hibernate - EJB 注解映射