1. 事务说明
在Spring中,事务有两种实现方式,分别是编程式事务管理和声明式事务管理两种方式。
编程式事务管理:编程式事务管理使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。对于编程式事务管理,spring推荐使用TransactionTemplate。
声明式事务管理:建立在AOP之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。
声明式事务管理不需要入侵代码,通过@Transactional就可以进行事务操作,更快捷而且简单。推荐使用
2. 如何使用
(1) 不加@Transactional,出现异常不会回滚
(2) 加@Transactional,出现异常也会回滚
(3)加@Transactional,异常被捕获后,不会回滚
(4)加@Transactional,如果调用其他Service的方法出异常了,则try-catch失效,会回滚,并报rollback-only异常