事务是一组操作的集合,它是一个不可分割的工作单位。事务会把所有的操作作为一个整体,一起向数据库提交或者是撤销操作请求。所以这组操作要么同时成功,要么同时失败。
事务的操作主要有三步:
举例说明:当部门解散了不仅需要把部门信息删除了,还需要把该部门下的员工数据也删除了。但是当这两个业务功能之间有代码出错时,会出现把部门信息删除了,但是该部门下的员工数据仍然存在。此时就需要事务回滚,即部门信息不应该删除。
@Transactional作用:就是在当前这个方法执行开始之前来开启事务,方法执行完毕之后提交事务。如果在这个方法执行的过程当中出现了异常,就会进行事务的回滚操作。
@Transactional注解书写位置:
此时即解决以上问题。
此外,我们可以使用注解 @EnableTransactionManagement 开启Spring对 @Transactional 注解的支持,使得在方法或类上添加 @Transactional 注解后,Spring能够捕获该注解并自动处理事务。
@EnableTransactionManagement注解的作用可以从以下几个方面理解:
启用事务管理:通过@EnableTransactionManagement注解,告诉Spring框架要启用事务管理功能。这样Spring就会自动创建并注册一个名为transactionManager的事务管理器,用于处理事务相关的操作。
定义事务管理器:除了默认的事务管理器transactionManager外,你还可以通过配置指定其他的事务管理器。通过在配置类中添加如下代码,可以创建一个名为myTransactionManager的事务管理器:
@Bean
public PlatformTransactionManager myTransactionManager() {
// 创建并配置自定义的事务管理器
// ...
}
可以在启动类开启注解方式的事务管理。(当然不使用该注解也是可以的,@Transactional 注解会默认开启事务管理)
此外,可以在application.yml配置文件中开启事务管理日志,这样就可以在控制看到和事务相关的日志信息了。
#spring事务管理日志
logging:
level:
org.springframework.jdbc.support.JdbcTransactionManager: debug