Spring中的事务管理

        事务是一组操作的集合,它是一个不可分割的工作单位。事务会把所有的操作作为一个整体,一起向数据库提交或者是撤销操作请求。所以这组操作要么同时成功,要么同时失败。

事务的操作主要有三步:

  1. 开启事务(一组操作开始前,开启事务):start transaction / begin ;

  2. 提交事务(这组操作全部成功后,提交事务):commit ;

  3. 回滚事务(中间任何一个操作出现异常,回滚事务):rollback ;

当我们使用了Spring框架时,我们只需要通过一个简单的注解@Transactional就搞定了。

@Transactional作用:就是在当前这个方法执行开始之前来开启事务,方法执行完毕之后提交事务。如果在这个方法执行的过程当中出现了异常,就会进行事务的回滚操作。

@Transactional注解:我们一般会在业务层当中来控制事务,因为在业务层当中,一个业务功能可能会包含多个数据访问的操作。在业务层来控制事务,我们就可以将多个数据访问操作控制在一个事务范围内。

@Transactional注解书写位置:

  • 方法

    • 当前方法交给spring进行事务管理

    • 当前类中所有的方法都交由spring进行事务管理

  • 接口

    • 接口下所有的实现类当中所有的方法都交给spring 进行事务管理

可以在application.yml配置文件中开启事务管理日志,这样就可以在控制看到和事务相关的日志信息了

#spring事务管理日志
logging:
  level:
    org.springframework.jdbc.support.JdbcTransactionManager: debug

@Transactional事务管理注解的使用细节

  1. 异常回滚的属性:rollbackFor    

    1. rollbackFor这个属性可以指定出现何种异常类型回滚事务。
    2. @Transactional(rollbackFor=Exception.class)     
    3. 默认只有运行时异常 RuntimeException才会回滚。
  2. 事务传播行为:propagation

    1. 当一个事务方法被另一个事务方法调用时,这个事务方法应该如何进行事务控制,也就是事务的传播行为

    2. @Transactional(propagation = Propagation.REQUIRES_NEW)

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值