Spring JDBC事务管理

1.事务基础

  • 事务: 是一种能够保证同一个业务中多个写(增删改)操作要么全部成功,要么全部失败的机制
  • 在业务方法上添加@Transactional即可保证此方法是业务性(要么全部成功,要么全部失败)的。
  • 在Spring JDBC中,处理事务的机制大致是:
开启事务:Begin
try {
    你的业务方法
    提交:Commit
} catch (RuntimeException e) {
    回滚:Rollback
}
  • 所以,为了保证事务性,所有的写操作在执行之后,必须有某个判定为失败的标准,且判断定为失败后,必须抛出RuntimeException或其子孙类异常!
  • Spring JDBC默认对RuntimeException进行回滚处理,有必要的话,也可以配置为其它异常类型
  1. 使用
  • 当需要方法是事务性的,可以使用@Transactional注解,此注解可以添加在:
    • 接口
      • 会使得此接口的实现类的所有实现方法都是事务性的
    • 接口中的抽象方法上
      • 会使得此接口的实现类中,重写的此方法是事务性的
      • 只作用于当前方法
      • 如果接口上也配置了此注解,并且接口和抽象方法的注解均配置了参数,以方法上的配置为准
    • 业务实现类
      • 会使得当前类中所有重写的方法都是事务性
        • 自定义的方法不会是事务性的
    • 业务实现类中的方法
      • 不可以添加在自定义的(不是重写的接口的)方法上
        • 语法上,可以添加,但执行时,不允许
  • Spring JDBC是通过接口代理的方式进行事务管理,所以,只对接口中声明的方法有效!
  • 通常,应该将@Transactional添加在接口中的抽象方法上(如果偷懒,或为了避免遗漏,也可以直接添加在接口上)。

3.依赖项

<!-- Mybatis Spring BootMybatis及对Spring Boot的支持 -->
<!-- 仅需要保留spring-jdbc,使得业务接口可以使用@Transactional注解 -->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.2.2</version>
</dependency>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值