Spring事务的学习之路


事务的基本概念

  1. 定义
    事务时在访问数据库时,确保数据库从一种正确状态转换为另一种正确状态。
  2. ACID
    (1)原子性(atomicity)
    即不可分割性,事务要么全部被执行,要么全部不执行。当有子事务提交失败时,会导致他子事务的数据库操作被回滚。
    (2)一致性(consistency)
    事务的执行使得数据库从一种正确状态转换成另外一种正确状态
    (3)隔离性(isolation)
    在事务正确提交之前,不允许把事务对该数据的改变提供给任何其他事务。
    (4)持久性(durability)
    事务正确提交之后,其结果将永远保存在数据库之中。
  3. 事务出现的问题
    因为事务的存在,可能在高并发的时候导致读取的数据不统一,造成误操作的问题,我们把可能出现的问题分为以下几种。
    (1)脏读
    指事务A读到了事务B还没有提交的数据。
    (2)不可重复读
    指在一个事务里面读取了两次某个数据,读出来的数据不一致。第一读取到的是未提交的数据,第二次读到了提交后的数据,导致两次读取的数据出现了差异。
    (3)幻读
    指在一个事务里面的操作中发现了未被操作的数据。比如学生信息,事务A开启事务–>修改所有学生当天签到状况为false,此时切换到事务B,事务B开启事务–>事务B插入了一条学生数据,此时切换回事务A,事务A提交的时候发现了一条自己没有修改过的数据,这就是幻读,就好像发生了幻觉一样。幻读出现的前提是并发的事务中有事务发生了插入、删除操作。
    注: 上述的问题出现在两个事务都为结束的情况下,当事务提交成功了,上述问题是不存在的。

以下内容主要以Spring展开讲解
4. 隔离级别
声明式事务的第二个方面是隔离级别。隔离级别定义一个事务可能受其他并发事务活动活动影响的程度。另一种考虑一个事务的隔离级别的方式,是把它想象为那个事务对于事物处理数据的自私程度。
在这里插入图片描述
5. 传播行为
事务的第一个方面是传播行为。传播行为定义关于客户端和被调用方法的事务边界。Spring定义了7中传播行为。
在这里插入图片描述
注意点: Spring默认情况下会对(RuntimeException)及其子类来进行回滚,在遇见Exception及其子类的时候则不会进行回滚操作。
关于Spring的事务可以参考:https://www.cnblogs.com/zhishan/p/3195219.html

猜你喜欢

转载自blog.csdn.net/qq_35275077/article/details/89173128
今日推荐