浅析Spring 事务(十九) 简介事务
2016-03-28 16:13
423 查看
经过前面十八个章节的浅析,我们已经初步了解了Spring框架的左膀右臂IoC和AOP,今天我们开始一起分析一下Spring的事务~
首先,今天算是开篇介绍~先说一下,什么是事务,事务是数据库的比较特有的属性,这也是数据库区别于文件系统的区别(HDFS貌似没有事务吧),也就是文件系统与数据库系统最大的不同吧,事务就是将数据库从一个一致性状态成功的转化成另一个一致性状态,说白了就是我们在操作数据库的一段业务逻辑中,要么全部成功提交,要么就全部失败,这就是事务的定义
数据库事务的四大特性
数据库的隔离级别:
(这边不做隔离级别的分析,可以参考一下http://blog.csdn.net/linuu/article/details/50790858)
说到这里,有些人觉得不对,因为大家觉得还有一个叫做Spring事务传播,如果配置REQUIRED+NOT_SUPPORT这样的传播属性的时候,的确可以部分提交成功,部分提交失败,其实这并不矛盾,因为Spring的事务传播只是定义了一个事务的原子性(一个事务管理的范围),并没有违反事务一致性的特性,事务只是保证在一个原子阶段(该阶段就是一个整体,无法再切割,无法再分)在这个基础上事务保证一致性
抛开Spring,数据库应该说是没有事务传播的说法的~
并不是所有的数据库都是支持ACID这四个特性的,举例来说 Mysql数据库 不同的存储引擎对数据库的事务支持都是不一样的,目前最流行的INNODB存储引擎就是支持事务的,而过去流行的存储引擎Myisam就是不支持的
MYSQL INNODB事务的实现原理:
事务是依靠redo日志和undo日志.redo日志,看其名字就知道表示“即将要做”的事,这个用来保证事务的原子性和一致性,undo日志是用来记录数据原有的状态的日志,用来回滚的
首先,今天算是开篇介绍~先说一下,什么是事务,事务是数据库的比较特有的属性,这也是数据库区别于文件系统的区别(HDFS貌似没有事务吧),也就是文件系统与数据库系统最大的不同吧,事务就是将数据库从一个一致性状态成功的转化成另一个一致性状态,说白了就是我们在操作数据库的一段业务逻辑中,要么全部成功提交,要么就全部失败,这就是事务的定义
数据库事务的四大特性
数据库的隔离级别:
(这边不做隔离级别的分析,可以参考一下http://blog.csdn.net/linuu/article/details/50790858)
说到这里,有些人觉得不对,因为大家觉得还有一个叫做Spring事务传播,如果配置REQUIRED+NOT_SUPPORT这样的传播属性的时候,的确可以部分提交成功,部分提交失败,其实这并不矛盾,因为Spring的事务传播只是定义了一个事务的原子性(一个事务管理的范围),并没有违反事务一致性的特性,事务只是保证在一个原子阶段(该阶段就是一个整体,无法再切割,无法再分)在这个基础上事务保证一致性
抛开Spring,数据库应该说是没有事务传播的说法的~
并不是所有的数据库都是支持ACID这四个特性的,举例来说 Mysql数据库 不同的存储引擎对数据库的事务支持都是不一样的,目前最流行的INNODB存储引擎就是支持事务的,而过去流行的存储引擎Myisam就是不支持的
MYSQL INNODB事务的实现原理:
事务是依靠redo日志和undo日志.redo日志,看其名字就知道表示“即将要做”的事,这个用来保证事务的原子性和一致性,undo日志是用来记录数据原有的状态的日志,用来回滚的
相关文章推荐
- spring 注解
- 使用Java进行SNMP编程-SNMP4J-SNMPv1/v2-代码实例
- super.getClass().getName() 返回父类还是当前类
- spring依赖注入
- java基础第五天_静态代码块、类的继承和接口
- java流压缩图片
- Java异常分类及统一处理详解
- MyBatis的一级缓存实现详解 及使用注意事项
- javaBean 规范
- 归并排序
- java的自己进行输入输出
- struts2学习(二)(action)
- Java中finally的执行时机
- javascipt之匿名函数和闭包
- eclipse最有用快捷键整理
- xStream可以轻易的将Java对象和xml文档相互转换
- 如何创建基于socket多线程的客户端和服务端
- Struts2校验框架
- java实现发送手机短信
- java帮助文档(英文版下载)