Spring 事务

本文介绍了Spring事务的基本概念,包括其在数据层的作用,Spring提供的PlatformTransactionManager和DataSourceTransactionManager接口,以及如何在业务层和数据层实现注解式事务。还详细讨论了事务的角色(管理员和协调员)和常见的事务属性及传播行为。
摘要由CSDN通过智能技术生成

Spring 事务简介

  • 事务作用:在数据层保障一系列的数据库操作同成功同失败
  • Spring 事务作用:在数据层或业务层保证一系列的数据库操作同成功同失败
public interface PlatformTransactionManager {
	void commit(TransactionStatus status) throws TransactionException;
	void rollback(TransactionStatus status) throws TransactionException;
}
public class DataSourceTransactionManager {
	...
}

步骤:

  1. 在业务层接口上添加 Spring 事务管理
public interface AccountService {
	@Trabsactional
	public void transfer(String out, String in, Double money);
}

注意: Spring注解式事务通常添加在业务层接口中而不会添加到业务层实现类中,降低耦合;
注解式事务可以添加到业务方法上表示当前方法开启事务,也可以添加到接口上表示当前接口所有方法开启事务。

  1. 设置事务管理器
    //配置事务管理器,mybatis使用的是jdbc事务
    @Bean
    public PlatformTransactionManager transactionManager(DataSource dataSource){
        DataSourceTransactionManager transactionManager = new DataSourceTransactionManager();
        transactionManager.setDataSource(dataSource);
        return transactionManager;
    }

PlatformTransactionManager : Spring 提供的标准接口

DataSourceTransactionManager : Spring 提供的实现类,用的是jdbc事务

如果要换,接口不能动,换实现类。

记得要注入 dataSource

注意: 事务管理器要根据实现技术进行选择,mybatis框架使用的是jdbc事务

  1. 开启注解式事务驱动 : @EnableTransactionManagement
@Configuration
@ComponentScan("com.itheima")
@PropertySource("classpath:jdbc.priperties")
@Import({JdbcConfig.class,MybatisConfig.class})
@EnableTransactionManagement
public class SpringConfig{
}

Spring 事务角色

  • 事务管理员: 发起事务方,在Spring中通常指代业务层开启事务的方法
  • 事务协调员: 加入事务方,在Spring中通常值代数据层方法,也可以是业务层方法

Spring 事务属性

在这里插入图片描述

事务传播行为

  • 事务传播行为: 事务协调员对事务管理员所携带事务的处理态度
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述

@Transactional(propagation = Propagation.REQUIRES_NEW)

public interface LogService {
    //propagation设置事务属性:传播行为设置为当前操作需要新事务
    @Transactional(propagation = Propagation.REQUIRES_NEW)
    void log(String out, String in, Double money);
}

在这里插入图片描述

  • 12
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值