理解Spring事务管理

理解事务以前,先讲一个你平常生活中最常干的事:取钱。ide

好比你去ATM机取1000块钱,大致有两个步骤:首先输入密码金额,银行卡扣掉1000元钱;而后ATM出1000元钱。事务

这两个步骤必须是要么都执行要么都不执行。ci

若是银行卡扣除了1000块可是ATM出钱失败的话,你将会损失1000元;开发

若是银行卡扣钱失败可是ATM却出了1000块,那么银行将损失1000元。it

因此,若是一个步骤成功另外一个步骤失败对双方都不是好事,若是无论哪个步骤失败了之后,整个取钱过程都能回滚,也就是彻底取消全部操做的话,这对双方都是极好的。io

事务就是用来解决相似问题的。事务是一系列的动做,它们综合在一块儿才是一个完整的工做单元,这些动做必须所有完成,若是有一个失败的话,那么事务就会回滚到最开始的状态,仿佛什么都没发生过同样。class

在企业级应用程序开发中,事务管理必不可少的技术,用来确保数据的完整性和一致性。程序

事务有四个特性:ACID密码

原子性(Atomicity):事务是一个原子操做,由一系列动做组成。事务的原子性确保动做要么所有完成,要么彻底不起做用。
一致性(Consistency):一旦事务完成(无论成功仍是失败),系统必须确保它所建模的业务处于一致的状态,而不会是部分完成部分失败。在现实中的数据不该该被破坏。
隔离性(Isolation):可能有许多事务会同时处理相同的数据,所以每一个事务都应该与其余事务隔离开来,防止数据损坏。
持久性(Durability):一旦事务完成,不管发生什么系统错误,它的结果都不该该受到影响,这样就能从任何系统崩溃中恢复过来。一般状况下,事务的结果被写到持久化存储器中。技术

相关文章
相关标签/搜索