首先,事务这个概念是数据库层面的,Spring 是基于数据库中的事务进行了扩展,并提供了一些能让程序员更加方便操作事务的方式。
Spring 框架有两种使用事务的方式,一种是编程式事务管理,另一种是声明式事务管理。
(1)编程式事务管理使用 TransactionTemplate,手动编程控制事务提交回滚,(比较麻烦,不建议使用)
(2)声明式事务管理:建立在 AOP 之上,本质就是通过 AOP 功能对方法前后进行拦截,将事务处理的功能编制到拦截的方法中,通过前置通知、后置通知和异常通知的方式进行事务的提交回滚。
声明式事务优缺点:
优点:声明式事务最大的优点就是不需要在业务逻辑代码中参杂这事务管理的代码,只需要在配置文件中做相关的事务规则声明或通过 @Transactional 注解的方式,便可以将事务规则应用到业务逻辑中。
缺点:唯一不足的是,最细粒度只能作用到方法级别,无法做到像编程式事务那样可以作用到代码块级别。