事务管理是应用系统开发中必不可少的一部分。Spring 为事务管理提供了丰富的功能支持。
Spring 事务管理分为编程式和声明式的两种方式。
编程式事务指的是通过编码方式实现事务,编程式事务管理使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。
声明式事务管理建立在AOP之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。
显然声明式事务管理要优于编程式事务管理,这正是spring倡导的非侵入式的开发方式。声明式事务管理使业务代码不受污染,一个普通的POJO对象,只要加上注解就可以获得完全的事务支持。和编程式事务相比,声明式事务唯一不足地方是,后者的最细粒度只能作用到方法级别,无法做到像编程式事务那样可以作用到代码块级别。但是即便有这样的需求,也存在很多变通的方法,比如,可以将需要进行事务管理的代码块独立为方法等等。
声明式事务有两种方式,一种是基于tx和aop名字空间的xml配置文件,另一种就是基于@Transactional注解。
需要明确几点:
默认配置下 Spring 只会回滚运行时、未检查异常(继承自 RuntimeException 的异常)或者 Error。
@Transactional 注解只能应用到 public 方法才有效。
原文地址:https://www.cnblogs.com/amunamuna/p/10095642.html
时间: 2024-10-31 11:34:51