SpringBoot开启事务

Java知识点总结:想看的可以从这里进入

2.12、事务开启

Spring Boot使用的是Spring 事务管理机制,对事务管理提供了一个顶层的接口PlatformTransactionManager,对所支持的所有事务统一管理接口。

实现类说明
org.springframework.jdbc.datasource.DataSourceTransactionManager使用 Spring JDBC 进行持久化数据时使用。
org.springframework.orm.hibernate3.HibernateTransactionManager使用 Hibernate 3.0 及以上版本进行持久化数据时使用。
org.springframework.orm.jpa.JpaTransactionManager使用 JPA 进行持久化时使用。
org.springframework.jdo.JdoTransactionManager当持久化机制是 Jdo 时使用。
org.springframework.transaction.jta.JtaTransactionManager使用 JTA 来实现事务管理,在一个事务跨越多个不同的资源(即分布式事务)使用该实现

不同的是Spring中我们要配置事务管理器,而Spring Boot 为我们提供了默认的事务管理器,当我们使用了 spring-boot-starter-jdbc 的启动器时,框架会自动注入 DataSourceTransactionManager 管理器。只需要在启动类上使用@EnableTransactionManagement注解来开启注解事务,即可不需要任何额外配置就可以用 @Transactional 注解进行事务的使用。但是当我们自己配置了事务管理器的时候,Spring Boot 将不再提供事务管理,而是使用我们定义的事务管理器。

@Transactional默认回滚的是RuntimeException的异常,如果抛出的不是RuntimeException的异常,数据库是不会回滚的。而Spring框架里所有的异常都被 org.springframework 重写为 RuntimeException。

  • 导入jdbc的启动器

  • 开启注解支持 @EnableTransactionManagement

    @SpringBootApplication
    @MapperScan("com.yu.springbootproject.mapper")
    @EnableTransactionManagement
    public class SpringbootprojectApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(SpringbootprojectApplication.class, args);
        }
    
    }
    
  • 在serviceImpl的方法上加注解:@Transactional

    事务属性说明
    propagation指定事务的传播行为。
    isolation指定事务的隔离级别。
    readOnly指定是否为只读事务。
    timeout表示超时时间,单位为“秒”;声明的事务在指定的超时时间后,自动回滚,避免事务长时间不提交会回滚导致的数据库资源的占用。
    rollbackFor指定事务对于那些类型的异常应当回滚,而不提交。
    noRollbackFor指定事务对于那些异常应当继续运行,而不回滚。
    value定义事务管理器
    transactionManager定义事务管理器
    @Override
    @Transactional(rollbackFor = Exception.class)
    public int insert(User record) {
    
        int insert = 0;
        try {
            insert = userMapper.insert(record);
            int i = 5/0;
        } catch (Exception e) {
            throw new RuntimeException("产生异常");
        }
    
        return insert;
    }
    
  • 测试,添加一条数据

    • 把事务注解取消

      image-20220923182202616
    • 添加事务注解

      image-20220923182347848
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

辰 羽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值