Spring事务管理的核心接口
来源:互联网 发布:pop3默认端口号 编辑:程序博客网 时间:2024/05/21 10:20
Spring事务管理高层抽象主要包括3个接口
PlatformTransactionManager
事务管理器TransactionDefinition
事务定义信息(隔离、传播、超时、只读)TransactionStatus
事务具体运行状态
关系:PlatformTransactionManager通过TransactionDefinition设置事务相关信息管理事务,管理事务过程中,产生一些事务状态:状态由TransactionStatus记录.
1.PlatformTransactionManager 事务管理器
- Spring为不同的持久化框架提供了不同PlatformTransactionManager接口实现
2.TransactionDefinition 事务定义信息(隔离、传播、超时、只读)
- 事务
事务:是逻辑上一组操作,要么全都成功,要么全都失败.
- 事务特性(ACID)
原子性(Atomicity):事务不可分割
一致性(Consistency):事务执行的前后,数据完整性保持一致.
隔离性(Isolation):一个事务执行的时候,不应该受到其他事务的打扰
持久性(Durability):一旦结束,数据就永久的保存到数据库.
- 如果不考虑隔离性
脏读:一个事务读取了另一个事务改写但还未提交的数据,如果这些数据被回滚,则读到的数据是无效的。
不可重复读:一个事务读到另一个事务已经提交数据(update)导致一个事务多次查询结果不一致
在同一事务中,多次读取同一数据返回的结果有所不同。换句话说就是,后续读取可以读到另一事务已提交的更新数据。
相反,“可重复读”在同一事务中多次读取数据时,能够保证所读数据一样,也就是,后续读取不能读到另一事务已提交的更新数据。
虚读(幻读): 一个事务读到另一个事务已经提交数据(insert)导致一个事务多次查询结果不一致
一个事务读取了几行记录后,另一个事务插入一些记录,幻读就发生了。再后来的查询中,第一个事务就会发现有些原来没有的记录。
- 事务的隔离级别
MySQL默认采用REPEATABLE_READ隔离级别;Oracle默认采用READ_COMMITTED隔离级别
- 事务的传播行为
传播行为:解决业务层之间的调用的事务的关系.
PROPAGATION_REQUIRED:支持当前事务,如果不存在 就新建一个
* A,B 如果A有事务,B使用A的事务,如果A没有事务,B就开启一个新的事务.(A,B是在一个事务中。)
PROPAGATION_SUPPORTS:支持当前事务,如果不存在,就不使用事务
* A,B 如果A有事务,B使用A的事务,如果A没有事务,B就不使用事务.
PROPAGATION_MANDATORY:支持当前事务,如果不存在,抛出异常
* A,B 如果A有事务,B使用A的事务,如果A没有事务,抛出异常.
PROPAGATION_REQUIRES_NEW如果有事务存在,挂起当前事务,创建一个新的事务
* A,B 如果A有事务,B将A的事务挂起,重新创建一个新的事务.(A,B不在一个事务中.事务互不影响.)
PROPAGATION_NOT_SUPPORTED以非事务方式运行,如果有事务存在,挂起当前事务
* A,B 非事务的方式运行,A有事务,就会挂起当前的事务.
PROPAGATION_NEVER 以非事务方式运行,如果有事务存在,抛出异常
PROPAGATION_NESTED如果当前事务存在,则嵌套事务执行
* 基于SavePoint技术.
* A,B A有事务,A执行之后,将A事务执行之后的内容保存到SavePoint.B事务有异常的话,用户需要自己设置事务提交还是回滚.
3.TransactionStatus 事务具体运行状态
是否有保存点
是否一个新的事务
事务是否已经提交
- ...
阅读全文
1 0
- Spring事务管理的核心接口
- Spring的ApplicationListener 接口及事务管理
- Spring有几种事务管理,Spring事务管理接口是什么
- Spring有几种事务管理,Spring事务管理接口是什么
- Spring有几种事务管理,Spring事务管理接口是什么
- Spring , Spring的事务管理
- Spring 声明式事务管理核心代码分析
- spring核心接口
- Spring核心容器接口
- Spring事务管理一:Spring事务管理的优点
- Spring(4)--Spring的核心机制:依赖注入(面向接口)
- Spring学习,Spring最核心的几个接口
- spring提供的事务管理
- spring 的事务管理
- spring的事务管理方式!
- spring框架的事务管理
- spring的事务管理问题
- Spring框架的事务管理
- 有道云PC版网络错误解决方案
- Pandas数据结构-DataFrame
- Java字符串操作
- java并发常用类
- Linux 文件之inode理解
- Spring事务管理的核心接口
- How to craw the Info of BiliBIli with python
- ArrayList和LinkedList的几种循环遍历方式及性能对比分析
- 剑指offer第28题(数组中出现次数超过一半的数字)
- postman设置alexa
- rnn和lstm
- Azure 虚拟机代理概述
- 【vue+axios】前端实现登录拦截
- auto_ptr