Spring事务管理回顾——基本概念
2016-05-26 17:07
316 查看
BackGround:
最近一直在面试,感觉spring的事务配置问的挺多的,再扯出来好好瞅瞅,争取做到秒杀面试官。
一致性:事务前后数据的完整性必须保持一致。
隔离性:多个用户并发访问数据库的时候,一个用户的事务不能被其他用户的事务所干扰,多个并发事务之间数据要相互隔离。
持久性:一个事务一旦被提交了,它对数据库中数据的改变就是永久性的,即使数据库发生故障也不应该对其有任何影响。
PlatformTransactionManager(事务管理器) TransactionDefinition(事务定义信息【隔离,传播,超时,只读】) TransactionStatus(事务具体运行状态)
脏读:一个事务读取了另一个事务改写但还未提交的数据,如果这些数据被回滚, 则读到的数据是无效的。
不可重复读:在同一个事务里面,多次读取同一数据返回的结果有所不同。
幻读:一个事务读取了几行记录后,另一个事务插入一些记录,幻读就发生了。在后来的查询中,第一个事务就会发现有些原来没有的记录。
事务的隔离级别:
事务的传播行为解决了业务层方法的互相调用产生的事务如何传递的问题。
最近一直在面试,感觉spring的事务配置问的挺多的,再扯出来好好瞅瞅,争取做到秒杀面试官。
一,事务的基本概念
什么是事务?
逻辑上的一组操作,这组操作要么全都成功,要么全都失败。例如,我购买完一个课程,要进行支付,需要首先去我的账户表中减去需要支付的金额,然后更新订单状态,支付才算是成功,那么支付跟更新订单状态就要放在一个事务里面执行,要么全成功,要么全失败,不能出现那种我买了课程,结果订单还显示我未支付,尼玛,坑爹呀。(不过宝宝真遇到过这种情况。。。)事务的特性
原子性:事务是一个 不可分割的单位,事务中的操作要么都发生,要么都不发生。一致性:事务前后数据的完整性必须保持一致。
隔离性:多个用户并发访问数据库的时候,一个用户的事务不能被其他用户的事务所干扰,多个并发事务之间数据要相互隔离。
持久性:一个事务一旦被提交了,它对数据库中数据的改变就是永久性的,即使数据库发生故障也不应该对其有任何影响。
二,spring中事务的API介绍
1,接口介绍
spring事务管理高层抽象主要有3个接口:PlatformTransactionManager(事务管理器) TransactionDefinition(事务定义信息【隔离,传播,超时,只读】) TransactionStatus(事务具体运行状态)
2,PlatformTransactionManager
spring为不同的持久化框架选择不同的PlatformTransactionManager接口实现:3,TransactionDefinition
在使用事务的时候,如果不考虑事务的隔离性,会引发一些安全性的问题:例如,脏读,不可重复读,幻读。脏读:一个事务读取了另一个事务改写但还未提交的数据,如果这些数据被回滚, 则读到的数据是无效的。
不可重复读:在同一个事务里面,多次读取同一数据返回的结果有所不同。
幻读:一个事务读取了几行记录后,另一个事务插入一些记录,幻读就发生了。在后来的查询中,第一个事务就会发现有些原来没有的记录。
事务的隔离级别:
4,事务的传播行为
事务的传播行为解决了业务层方法的互相调用产生的事务如何传递的问题。
相关文章推荐
- 韩顺平Spring框架学习,学习笔记(十一)
- Java 匿名内部类
- Java通过Executors提供四种线程池
- RxJava变换操作符:.concatMap( )与.flatMap( )的比较
- Spring 与代理有关属性详解
- 深入理解Java中的接口
- 每天进步一点点--java连接mysql
- java追加写入Excel之新建工作薄
- Java的final关键字
- Java文件下载
- java string 初始化
- Java解析xml——Dom解析
- Java 读取properties文件中文乱码解决
- JAVA thread0.interrupt()方法
- Java过滤器与SpringMVC拦截器之间的关系与区别
- Java学习总结(1)
- Android开发之使用Eclipse开发工具实现Android平台JNI的开发
- spring mybatis 多数据源读写分离实际应用
- Rxjava操作符compose()
- java课程第七天,匿名内部类以及异常处理