spring事务管理

基本概念和使用方法

事物的概念:事物是一组操作的集合,他是一个不可分割的工作单位,这些操作要么同时成功,要么同时失败

事物的操作:

  • 开启事物(一组操作开始前,开启事物):start transaction /begin;

  • 提交事物(这组事物全部成功之后,提交事物):commit

  • 回滚事物(中间任何一个操作出现异常,回滚事物):rollback

spring中提供好了事物管理的逻辑,直接在方法上使用@Transaction注解,该注解可以作用于方法上,类上,接口上

  • 作用在业务层的方法上,表示在这个方法执行之前开启事物,执行结束没有异常后提交事物

  • 作用在业务层的类上,表示这个类上所有的方法都交由spring进行事物管理

  • 作用在业务层的接口上,表示实现这个接口的实现类中的所有方法都交由spring进行事物管理

注意:@Transaction注解默认情况下只有出现RuntimeException才会回滚事物,这时我们需要使用rollbackFor属性控制出现何种异常类型,进行事物的回滚

  • @Transaction(rollbackFor = Exception.class):表示出现所有异常都进行事物回滚

propagation属性(事物的传播行为):当一个事物方法被另一个事物方法调用时,这个事物方法应该如何进行事物控制

属性值 含义
REQUIRED 【默认值】需要事物,有则加入事物没有则创建新事物
REQUIRES_NEW 需要新事物,无论有无都要创建新事物
SUPPORTS 支持事物,有则加入,无则在无事物状态中运行
NOT_SUPPORTED 不支持事物,在无事物状态下运行,如果当前以存在事物,则挂起当前事物
MANDATORY 必须有事物,否则抛出异常
NEVER 必须没事物,否则抛出异常

事物的传播行为使用场景:

  • 大部分情况下使用使用默认值REQUIRED

  • 当我们不希望事物之间相互影响时,既可以使用REQUIRES_NEW该传播行为,比如:下订单的事物中,有记录日志的事物,并且无论下单是否成功,记录日志的事物都需要记录,这时就需要在记录日志的事物上添加该属性,不会相互应该

你可能感兴趣的:(java,spring,boot,mysql)