- 1、本文档共16页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《06 Spring的事务处理》.pdf
第 6章 Spring的事务处理
从第5 章中读者可以了解到,使用Spring 提供的AOP ,就可以实现事务处理,本章主
要讲述 Spring 事务处理的基本概念和使用方法。首先对传统的事务处理作一介绍,然后再
介绍使用Spring 怎样来进行事务处理。Spring 提供了声明式和编程式事务处理。
6.1 简述事务处理
事务处理在应用程序开发中起着至关重要的作用。首先来看一下事务处理的基本概念,
假如读者已经了解了事务的基本概念,则可以跳过这一章。
6.1.1 事务处理的基本概念
事务处理由若干个步骤组成,这些步骤之间具有一定的逻辑关系,作为一个整体的操
作过程,所有步骤必须同时操作成功或者失败。当所有的步骤都操作成功时,事务就算操
作成功了,而当其中某一个步骤操作失败的时候,则该步骤之前的操作就必须撤销。简单
来说,所谓事务,就是一系列必须都成功的操作,只要有一步操作失败,所有其他的步骤
将都要撤销。这里有两个概念要说明一下。
(1)提交(Commit ):当所有的操作步骤都被完整执行后,称该事务被提交。
(2 )回滚(RollBack ):由于某一操作步骤执行失败,导致所有步骤都没有被提交,
则事务必须回滚,即回到事务执行前的状态。
举例来说明:在一个银行系统中,假如一个数据库表用来存放客户的存款金额,一个
数据库表用来存放客户的存取款历史。客户进行取钱操作的过程就是一个典型的事务。当
客户进行取钱操作时,一方面要改变客户的存款金额,一方面要增加客户的取款历史记录,
如果改变客户存款金额的操作成功之后,因为种种原因,比如网络故障导致增加客户取款
历史记录的操作不成功,这时就必须将改变客户存款金额的操作撤销掉,使其恢复至更改
前的状态,否则,如果改变客户存款金额的操作成功,而没有增加客户的取款历史记录,
就会造成数据库中记录的不一致。很明显,这种情况是不允许发生的。在这种情况下,事
务就必须回滚到这一事务执行前的状态。
6.1.2 事务处理的特性
每个事务都有一些它们所共有的特性,叫做ACID 特性,分别是原子性(Atomicity )、
·126 · Spring 从入门到精通
一致性(Consistency )、隔离性(Isolation )和持久性(Durability )。下面分别对这4 种特
性进行讲解。
1.原子性
事务的原子性表示事务执行过程中,把事务作为一个工作单元处理,一个工作单元可
能包括若干个操作步骤,每个操作步骤都必须完成才算完成,若因任何原因导致其中的一
个步骤操作失败,则所有步骤都操作失败,前面已经完成的步骤也必须回滚,系统将返回
到事务开始前的状态。
在前面银行取钱的例子中,如果改变客户的存款金额和增加客户的取款历史记录两个
步骤中有任何一个不成功,则整个操作步骤都不成功,不可能出现客户的存款金额改变了,
但客户的取款历史记录却没有增加,如果出现这种情况,后果也是可以想象的。
2 .一致性
事务的一致性保证数据处于一致状态。如果事务开始时系统处于一致状态,则事务结
束时系统也应处于一致状态,不管事务成功还是失败。当然一致性不只是事务本身的问题,
它也是由同一组业务规则或完整性限制确定的,因为如果业务规则不保证数据处于一致状态,
只是事务本身也是无能为力的,所以为了保证一致性,需要事务本身和开发人员的共同合作。
在前面银行取钱的例子中,如果改变客户的存款金额和增加客户的取款历史记录两个
步骤中有任何一个不成功,则系统必须返回到客户取钱之前的那个状态,也就是客户的存
款金额和客户的取款历史记录必须是同步的。
3 .隔离性
事务的隔离性保证事务访问的任何数据不会受其他事务所做的任何改变的影响,直到
该事务完成。可以想象,假如两个事务同时访问同一个数据,而且都执行修改数据的操作,
那是多么的可怕。
在前面银行取钱的例子中,当一个取钱的事务正在进行时,不允许其他的事务再对它
进行操作。这是因为,假如一个事务正在进行取钱的动作,另外一个事务也在进行取钱的
动作,则造成的结果是可想而知的。
4 .持久性
事务的持久性保证假如事务执行成功,则它在系统中产生的结果应该是持久的。事务提
交是数据源和应用程序之间的一个协议,而事务日志就是这个协议的书面记录。更为重要的
是,改变本身不是持久的,另一事务可能在此后改变数
您可能关注的文档
- 《%AE+酷睿™+微架构:+新的处理器创新成果》.pdf
- 《%b5%81化床技术在铀燃料循环工业中的应用》.pdf
- 《ѧϰ 路长柏等编著 干式变压器理论与计算》.pdf
- 《(DSP)上的内部闪存存储器上运行一个应用》.pdf
- 《(中海物业)物业管理培训教案》.pdf
- 《(二零一六)JAVA精华》.pdf
- 《(二零一六)处于开发中的糖尿病药物》.pdf
- 《(二零一六)英语学习:How+Not+To+Say+What+You+Mean00001》.pdf
- 《(二零一六)英语学习:雅思词汇真经00001》.pdf
- 《(二零一六)英语学习:雅思词汇真经00002》.pdf
文档评论(0)