美文网首页
Spring事务

Spring事务

作者: WinnXUDONG | 来源:发表于2018-04-04 09:44 被阅读0次

什么是事务?

事务指的是逻辑上的一组操作,这组操作要么全部成功,要么全不失败。

例如:

银行转账,A转给B 100元

1、A的卡中扣掉100元

2、B的卡中增加100元

转账完成,这2个步骤就是一个事务。特点就是1和2必须保证同时成功,或同时失败。

事务的特性

1 . 原子性

2 . 一致性

3 . 隔离性

4 . 持久性

原子性

原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。

一致性

一致性指事务前后数据的完整性必须保持一致

隔离性

隔离性指多个用户并发访问数据库时,一个用户的事务不能被其他用户的事务所干扰,多个并发事务之间数据要相互隔离。

持久性

持久性指一个事物一旦被提交,它对数据库中数据的改变就是永久性的,即使数据库发生故障也不应该对其有任何影响。

Spring事务管理

Spring事务管理高层抽象主要包括3个接口

  • PlatformTransactionManager
    -- 事务管理器(真正管理事务的接口)
  • TransactionDefinition -- 事务定义信息(隔离级别、传播、超时、只读)
  • TransactionStatus -- 事务具体运行状态

PlatformTransactionManager

Spring为不同的持久化框架提供了不同PlatFormTransactionManager接口实现

PlatformTransactionManager

TransactionDefinition

隔离级别:解决脏读,不可重复读,幻读。

脏读:一个事物读取了另一个事务改写但还未提交的数据,如果这些数据被回滚,则读到的数据是无效的。

不可重复读:在同一事物中,多次读取统一数据返回的结果有所不同。

幻读:一个事物读取了几行记录,另一行事务插入一些记录,幻读就发生了。再后来的查询中,第一个事务就会发现有些原来没有的记录。

隔离级别

传播行为:事务传播行为就是多个事务方法相互调用时,事务如何在这些方法间传播。

传播行为

事务的七种传播行为:

image.png

七种传播行为分为三类,前三种为一类最重要的是第一个,接着的三种为一类最重要的是第一个,最后一个为一类。

TransactionStatus

TransactionStatus接口可以让事务管理器控制事务的执行,可以检查事务是不是一个新事务,或者是否只读,或者事务的状态。TransactionStatus还可以初始化回滚操作。

Spring支持两种方式事务管理

  • 编程式的事务管理
    • 在实际应用中很少使用
    • 通过TransactionTemplate手动管理事务
  • 使用XML配置声明式事务
    • 开发中推荐使用(代码侵入性最小)
    • Spring的声明式事务是通过AOP实现的

代码实现地址:https://github.com/Wxdddd/spring_transactions

相关文章

  • 关于事务的思考

    Spring对于事务的支持 Spring事务接口 Spring事务管理器 Spring并不直接管理事务,而是提供多...

  • Spring事务

    Spring 事务 分类 Spring可以支持编程式事务和声明式事务。 编程式事务 实现 Spring使用事务管理...

  • Spring中实现事务方式

    Spring 中实现事务的方式 Spring 并不直接支持事务,只有当数据库支持事务时,Spring 才支持事务,...

  • Spring事务的传播特性引发的一场血案

    Spring事务的传播特性是对于Spring事务管理的一项特殊配置;Spring事务基于Spring AOP特性,...

  • Spring 事务实现分析

    1. Spring 事务简介 Spring 本身并不实现事务,Spring事务 的本质 还是 底层数据库 对事务的...

  • spring04

    Spring JdbcTemplate学习 Spring 声明式事务 xml配置实现 Spring 声明式事务 注...

  • 程序员之Spring

    1. Spring事务 spring的事务实现原理Spring事务将connection放入到当前线程的threa...

  • 面前温习

    Spring事务传播特性的浅析——事务方法嵌套调用的迷茫 解惑 spring 嵌套事务

  • 分布式事务(2)Spring事务

    2.1 Spring事务原理 Spring支持编程式事务和声明式事务。编程式事务就是用个事务类Transactio...

  • spring事务的实现原理

    spring实现事务的原理 Spring事务 的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring...

网友评论

      本文标题:Spring事务

      本文链接:https://www.haomeiwen.com/subject/lldchftx.html