您的位置:首页 > 编程语言 > Java开发

浅析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日志是用来记录数据原有的状态的日志,用来回滚的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring事务简介