一:简介
在Spring中事务可以通过两种方式来管理,一种是编程式事务另一种是声明式事务
- 声明式事务:@Transactional 在方法的开头开始事务,在方法的结束提交事务
- 编程式事务:TransactionTemplate或者PlatformTransactionManager
声明式事务和编程式事务的区别:声明式事务开始事务和提交事务都是固定的,不够灵活,而编程式事务通过代码在想要的地方开始事务,在想要的地方提交事务,更加灵活。
二:声明式事务
声明式事务:通过AOP对目标方法进行拦截,在方法的开始出开始事务(或者加入事务),在方法结束时提交事务,当发生异常时回滚事务, 可以通过@Transactional来实现
- @Transactional注解在Service类上表示所有public方法都使用了事务
- @Transactional注解在方法上表示该方法使用注解,方法级别的注解会覆盖类级别的注解
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented