码迷,mamicode.com
首页 > 编程语言 > 详细

spring源码之事务上篇

时间:2018-07-16 21:07:59      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:持久性   3.1   mys   就是   核心   说明   成功   恢复   .com   

 

前言

本篇之前,已经写过关于AOP的源码分析,在此基础上来阅读事务的源码是比较清晰的。另外,需要对数据库有一定的了解,我们所说是事务一般指的都是狭义的事务,即数据库事务。文中没有特别指出的数据库,均指的是mysql,后面再来写一篇关于mysql的锁和事务的文章。

概述

事务指的是一个程序执行单元,这个执行单元要么成功,要么失败,绝对不允许存在中间状态,它是我们恢复和并发控制的基本单位。

学习事务时,一般会拿转钱来做说明,这里也拿张三向李四转100元来说明,这个过程分为两步,张三帐户减100,李四帐户加100.

事务的四个特性(ACID)

  • 原子性:事务由一系列操作来完成,要么保证这一系列操作同时起作用,要到全部不起作用。以例子来说,张三减100,李四加100。要同时成功或失败,不然就不满足原子性。
  • 一致性:从一个数据库状态转变到别一个状态。一致性和原子性,经常会让人认为是一个东西,个人理解一致性是从状态变化的角度来看问题,即结果,而原子性更偏向于过程来看问题。以例子来说,这里的状态就是转帐前后,张三和李四总的资金数没有发生变化。可以说原子性保证了一致性。
  • 隔离性:并发执行的事务是相互隔离的。以例子来说,假设张三帐户有1000元,他同时向王五也转帐100,转给李四时,他的户头上扣了100,就只有900了,转给王五是,再扣100,只有800了,如果李四收钱时出了问题,而王五收钱成功,这时把800写入到数据库。张三就会很生气,因为帐户被多扣了100。这个就是有问题的。
  • 持久性:事务完成,不论发生什么,都不会对操作有影响。

知识点

学习spring事务时,我们一般会从事务特性、隔离级别、传播行为三个进行分析

  • 事务的四个特性

  学习事务时,一般会拿转钱来做说明,这里也拿张三向李四转100元来说明,这个过程分为两步,张三帐户减100,李四帐户加100.

  事务的四个特性(ACID)

    • 原子性:事务由一系列操作来完成,要么保证这一系列操作同时起作用,要到全部不起作用。以例子来说,张三减100,李四加100。要同时成功或失败,不然就不满足原子性。
    • 一致性:从一个数据库状态转变到别一个状态。一致性和原子性,经常会让人认为是一个东西,个人理解一致性是从状态变化的角度来看问题,即结果,而原子性更偏向于过程来看问题。以例子来说,这里的状态就是转帐前后,张三和李四总的资金数没有发生变化。可以说原子性保证了一致性。
    • 隔离性:并发执行的事务是相互隔离的。以例子来说,假设张三帐户有1000元,他同时向王五也转帐100,转给李四时,他的户头上扣了100,就只有900了,转给王五是,再扣100,只有800了,如果李四收钱时出了问题,而王五收钱成功,这时把800写入到数据库。张三就会很生气,因为帐户被多扣了100。这个就是有问题的。
    • 持久性:事务完成,不论发生什么,都不会对操作有影响。
  • mysql数据库的隔离级别 

  分为以下四个级别,每个级别都是来解决特点问题的

    • READ UNCOMMITTED

总结

整个AOP的分析就到此结束,接下来对事务这块的源码做一些分析

参考链接

  • https://wenku.baidu.com/view/6ce3121da300a6c30c229f89.html(核心关注点与横切关注点)
  • https://www.cnblogs.com/syf/archive/2012/05/09/2491780.html(OOP与AOP)
  • https://blog.csdn.net/garfielder007/article/details/78057107(连接点用地概念)
  • https://docs.spring.io/spring/docs/4.3.18.RELEASE/spring-framework-reference(spring官方文档)
  • http://www.cnblogs.com/xrq730/p/6753160.html((源码分析的参考文章)
  • https://blog.csdn.net/elim168/article/details/78166296(@DeclareParents使用)

 

spring源码之事务上篇

标签:持久性   3.1   mys   就是   核心   说明   成功   恢复   .com   

原文地址:https://www.cnblogs.com/lucas2/p/9319917.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!