本篇文章给大家带来的内容是关于如何理解spring事务及声明式事务的使用,包括数据库中的事物隔离级别,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
spring事务及声明式事务的使用
(同学们,开始复习大学还给老师的数据库知识啦!!)
事务:访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务有四个属性:(ACID)原子性:一个事务是一个不可分割的工作单元,事务中包括的诸操作要么都做,要么都不做。一致性;事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性使密切相关的。隔离性:一个事务的执行不能被其他事物干扰。即一个事务内部操作及使用的数据对并发的其他事物是隔离的,并发执行的各个事务之间不能相互干扰。持久性:持久性也称永久性,指一个事务一旦提交,它对数据库中数据的改变就应该永久的。
事务目的:为了使数据保持一致性和完整性。
一致性:一个业务链的数据状态是一致的,不能部分改变部分不改变。
完整性:一个业务链的数据是完整的,要么一起完成一起失败,不能部分写入成功,部分写入失败。
简单理解事务的一致性和完整性就是要么一起活,要么一起死,不能独活。(像是凄惨的爱情…………^ _ ^)
数据库中的事物隔离级别
在了解事务隔离级别之前,先来了解一下数据中经常发生的可能导致业务逻辑失败的几种情况。
脏读
当一个事务正在访问数据,并且对数据进行了修改,并且还没有提交到数据库中;这时另一事务也访问了这个数据,然后使用了这个数据。
例如:张三的银行账户现在有1000,现在张三存入了200,那么在张三点击提交的时候,他媳妇(辛苦的张三在给媳妇存零花钱)在商场购物花了500。张三查看余额发现只有500了(张三懵逼了。。)。然后两人为了200吵了起来。