Spring事务



在这里插入图片描述

在这里插入图片描述


第一章 Spring 的事务处理

1.1 什么是事务

保证业务操作完整性的⼀种数据库机制 事务的4特点: A C I D

  1. A 原⼦性
  2. C ⼀致性
  3. I 隔离性
  4. D 持久性

1.2 如何控制事务

  • JDBC:

    Connection.setAutoCommit(false); 
    Connection.commit(); 
    Connection.rollback(); 
    
  • Mybatis:

    • Mybatis⾃动开启事务
    sqlSession(Connection).commit(); 
    sqlSession(Connection).rollback(); 
    

结论:控制事务的底层都是 Connection 对象完成的。

1.3 Spring 控制事务的开发

  1. 声明式事务

    方法上加事务注解就行了。但是 注意事务失效情况。

  2. 编程式事务

    @Autowired
    private TransactionDefinition transactionDefinition;
    @Autowired
    private DataSourceTransactionManager transactionManager;
    
    //  开启事务
    TransactionStatus transactionStatus
            = transactionManager.getTransaction(transactionDefinition);
    
    try {
        //	业务操作
        // ...
        //  提交事务
        transactionManager.commit(transactionStatus);
    } catch (Exception e) {
        //  回滚事务
        transactionManager.rollback(transactionStatus);
        log.error("...");
    }
    

第二章 Spring中的事务属性

2.1 什么是事务属性

属性:描述物体特征的⼀系列值

​ 性别 身⾼ 体重 …

事务属性:描述事务特征的⼀系列值

  1. 隔离属性
  2. 传播属性
  3. 只读属性
  4. 超时属性
  5. 异常属性

2.2 如何添加事务属性

@Transactional(isloation=,propagation=,readOnly=,timeout=,rollbackFor=, noRollbackFor=,) 

2.3 事务属性详解

2.3.1 隔离属性

四种隔离级别

//TODO

在这里插入图片描述

2.3.2 传播属性

概念:他描述了事务解决嵌套问题的特征

什么叫做事务的嵌套:他指的是⼀个⼤的事务中,包含了若⼲个⼩的事务

问题:⼤事务中融⼊了很多⼩的事务,他们彼此影响,最终就会导致外部⼤的事务,丧失了 事务的原⼦性

传播属性的值及其⽤法

传播属性的值外部 不存 在事 务外部存在事务备注
REQUIRED(默认)开启 新的 事务融合到外部事 务中增删 改⽅ 法
SUPPORTS不开 启事 务融合到外部事 务中查询 ⽅法
REQUIRES_NEW开启 新的 事务挂起外部事 务,创建新的 事务⽇志 记录 ⽅法 中

2.3.3 只读属性

针对于只进⾏查询操作的业务⽅法,可以加⼊只读属性,提供运⾏效率

默认值:false

2.3.4 异常属性

Spring事务处理过程中

默认 对于RuntimeException及其⼦类 采⽤的是回滚的策略

默认 对于Exception及其⼦类 采⽤的是提交的策略

rollbackFor = {java.lang.Exception,xxx,xxx}

noRollbackFor = {java.lang.RuntimeException,xxx,xx}

@Transactional(rollbackFor = {java.lang.Exception.class},noRollbackFor = {java.lang.RuntimeException.class})

建议:实战中使⽤ RuntimeExceptin 及其⼦类 ;使⽤事务异常属性的默认值



在这里插入图片描述



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值