Spring事务笔记

本文详细讲解了Spring事务的四个核心属性:隔离级别、超时时间、只读模式和传播行为。通过理解不同隔离级别的优缺点,掌握事务的开始时机和如何在多方法调用中控制事务。同时,介绍了如何在Spring配置文件和注解中启用事务管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spring

事务的属性

1 定义事务的隔离级别
isolation=默认值 (随着数据库的隔离级别而变化)
2 定义事务的超时时间
timout=-1 (什么时候执行完毕什么时候结束)
3 定义事务是否只读行为
增删改语句 readonly=false 开事务(默认)
查询语句: readonly=true 关闭事务 提高查询效率
4 定义事务的传播行为
propagation=REQUIRED
propagation=SUPPORTS

隔离级别分类:
	- read_uncommited:(读未提交)会出现脏读

	- read_committed:(读已提交)可以解决脏读,会出现不可重复读

	- repeatable_read:(可重复读)可以解决不可重复读 【mysql默认】

	- serializable:(串行化)可以解决一切

propagation:多方法嵌套时,被调用方法对事务的支持情况

  • REQUIRED(保证必须有事务)
    被调用者会看调用者是否有事务,如果有事务直接加入,如果没事务,创建一个事务
    保证多个方法在一个事务中
  • SUPPORTS(可有可无事务)
    被调用者会看调用者是否有事务,如果有事务直接加入,如果没事务,就使用非事务一起执行

在这里插入图片描述

声明式事务使用

1.application.xml开启对注解事物的支持
<!--对事务注解的支持-->
<tx:annotation-driven></tx:annotation-driven>
2.将事务管理器交给Spring容器管理
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"></property>
</bean>
3.在需要事务的类或者方法上用@Transactional注解配置事务
/**
 * 配置事务
 *      @Transactional
 *          配置到类上   :表明此类中的所有方法都具有此事务
 *          配置到方法上 :表明此方法具有此事务
 *              * 就近原则(方法上的配置会覆盖类上的配置)
 @Service
public class AccountServiceImpl implements AccountService {

    @Autowired
    private AccountDao accountDao;

    @Transactional(isolation = Isolation.DEFAULT,timeout =-1,readOnly = false,propagation = Propagation.REQUIRED)
    public void tranFer() {
        accountDao.toMoney();
        int i=1/0;
        accountDao.inMoney();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值