Spring4基础三二-数据库篇-事务管理-1

【Spring4基础三二-数据库篇-事务管理-1】上一章节《Spring4基础三一-数据库篇-JDBC模板-3》
如果文中有纰漏,请多多指正!!!
事务的概念一、事务是什么
事务是应用程序中一系列严密的操作(典型的:银行转账业务) , 所有操作必须全部成功完成 , 否则所有已成功的操作都会被撤消 。 也就是说 , 在一个事务中的一系列的操作的最终结果是要么全部成功 , 要么一个都不做 。
二、事务的特征ACID
1.原子性(Atomicity)
原子性是指一个事务是一个不可分割的工作单元 , 事务包含的所有操作要么全部完成 , 要么完全不起作用 。 2.一致性(Consistency)
一致性是指事务执行前后 , 处理的数据必须处于一致的状态 , 而不会是部分完成部分失败 。 也就是事务要求所有的DML语句操作 , 必须保证同时成功或同时失败(失败回滚) 。 3.隔离性(Isolation)
隔离性是指多个事务并发执行的时候 , 事务内部的操作与其他事务是隔离的 , 并发执行的各个事务之间不能互相干扰 。 也就是一个事务不会影响其它事务的运行;4.持久性(Durability)
持久性是指在事务完成后 , 该事务对数据库所作的更改将持久地保存在数据库中 , 无论发生什么系统错误 , 结果数据都不应该受到影响;三、事务的隔离级别
1.read uncommitted 读未提交(级别最低)
1) 事务A和和事务B , 事务A未提交的数据 , 事务B可以读取2) 事务B读取到的数据可以叫做“脏数据”或者“脏读 Dirty Read”3) 读未提交隔离级别最低 , 数据库默认隔离级别一般都高于该隔离级别;2.read committed 读已提交
1) 事务A和事务B , 事务A已提交的数据 , 事务B才可读取到;2) 该隔离级别可以避免脏数据;3) 该隔离级别能够导致“不可重复读取”(事务A提交前后 , B事务读取到的数据前后不一致)4) 该隔离级别可以避免脏数据;3.repeatable read 可重复读
1) 事务A和事务B , 事务A提交之后的数据 , 事务B读取不到;也就是说 , 事务A提交前后 , 事务B读取到数据都是事务A提交之前的数据 。 2) 对于B事务来说 , 虽然可以达到“可重复读”效果 , 但是会导致“幻象读”(A事务提交后 , 数据已变更 , B事务还是读取A事务提交前的数据) 。 3) 这种隔离级别可以避免“脏读和不可重复读”4.serializable 串行化
1) 事务A和事务B , 事务A在操作数据库表中数据的时候 , 事务B叧能排队等待 。 2) 最安全的 , 但是吞吐量太低 , 用户体验不好 。
Spring4基础三二-数据库篇-事务管理-1文章插图