Spring事务

2018-04-04  本文已影响0人  WinnXUDONG

什么是事务?

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

例如:

银行转账,A转给B 100元

1、A的卡中扣掉100元

2、B的卡中增加100元

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

事务的特性

1 . 原子性

2 . 一致性

3 . 隔离性

4 . 持久性

原子性

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

一致性

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

隔离性

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

持久性

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

Spring事务管理

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

PlatformTransactionManager

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

PlatformTransactionManager

TransactionDefinition

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

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

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

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

隔离级别

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

传播行为

事务的七种传播行为:

image.png

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

TransactionStatus

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

Spring支持两种方式事务管理

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

上一篇 下一篇

猜你喜欢

热点阅读