@Transactional注解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了@Transactional注解相关的知识,希望对你有一定的参考价值。
1.作用简述br/> 作用由于业务需求,在**Service的方法A中使用一个for循环,每次循环里面的业务可能会发生异常,这个时候需要将循环内的所有数据库操作给回滚掉**,但又不能影响到之前循环里数据的更改,并且后面的循环里不发生异常的情况下也需要正常操作数据库。**2.用法简述**
为了保证事务的一致性,事务管理对企业应用是至关重要的。Sring支持编程式事务管理和声明式事务管理两种方式。
编程式事务管理两种实现方式:1)TransactionTemplate;2)直接使用底层的PlatformTransactionManager。对于编程式事务管理,Spring推荐使用方式1)。
声明式事务管理建立在AOP之上,其本质是对方法前后进行拦截,然后再目标方法开始之前创建一个或加入一个事务,在执行完目标方法之后,根据情况执行或回滚事务。声明式事务管理也有两种方式:1)基于tx和aop名字空间的xml配置文件;2)基于@Transactional注解。注解方式更简单易用。
3.Transactional注解使用说明br/> 当作用于类上,该类的所有public方法都具有该事务属性。也可以**作用于方法级别上**。
在项目中,@Transactional(rollbackFor=Exception.class),如果类加了这个注解,那么这个类里面的方法抛出异常,就会回滚,数据库里面的数据也会回滚。
使用@Transactional如果不配置rollbackFor属性,那么事务只会在遇到RuntimeException的时候才会回滚,加上rollbackFor=Exception.class,可以让事物在遇到非运行时异常时也回滚。
以上是关于@Transactional注解的主要内容,如果未能解决你的问题,请参考以下文章
@EnableTransactionManagement以及 @Transactional 注解