spring学习---事务管理

目录

  • 什么叫事务
  • 四大特性 ACID
  • 事务操作基本流程
  • spring 事务分类
    • 编程式事务
    • 声明式事务
  • spring源码分析
    • 声明式事务分析
    • 声明式事务类图
    • 声明式事务优缺点

1. 什么叫事务

事务是一组原子操作单元,从数据库角度讲,就是一组sql指令,通俗的解释就是:要么全部成功,要么全部失败

2. 四大特性 ACID

特性解释
原子性(Atomicity)事务是一个原子操作,由一系列动作组成。事务的原子性确保动作要么全部完成,要么完全不起作用
一致性(Consistency)事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的
隔离性(Isolation)可能有许多事务会同时处理相同的数据,因此每个事务都应该与其他事务隔离开来,防止数据损坏
持久性(Durability)指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响

3. 事务操作基本流程

Created with Raphaël 2.2.0 事务开启(open) 事务执行(execute) 成功or失败 事务提交(commit) 关闭事务(close) End 事务回滚(rollback) yes no

4. spring 事务分类

4.1 编程式事务:

所谓编程式事务指的是通过编码方式实现事务,即类似于JDBC编程实现事务管理。管理使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。对于编程式事务管理,spring推荐使用TransactionTemplate。

4.2 声明式事务:

管理建立在AOP之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。声明式事务最大的优点就是不需要通过编程的方式管理事务,这样就不需要在业务逻辑代码中掺杂事务管理的代码,只需在配置文件中做相关的事务规则声明(或通过基于@Transactional注解的方式),便可以将事务规则应用到业务逻辑中。

5. spring源码分析

5.1 声明式事务分析

默认配置参考官网

# DAO (PersistenceExceptionTranslationAutoConfiguration)
# Whether to enable the PersistenceExceptionTranslationPostProcessor.
spring.dao.exceptiontranslation.enabled=true 

5.2 声明式事务类图

spring事务控制源码结构关系

5.3 编程式事务类图

spring事务控制源码结构关系

5.4 声明式事务优缺点

优点: 非侵入式开发,一个普通的POJO对象,只需要加上注解就可以获得完全的事务支持
缺点: 事务只能做到方法级,不能做到代码块级别,可以使用把代码块独立为方法的方式解决


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值