zoukankan      html  css  js  c++  java
  • 事务相关

    事务指的是逻辑上的一组操作,这组操作要么全部成功,要么全部失败。

    事务的ACID特性:

    原子性(A):指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。

    一致性(C):指事务前后数据的完整性必须保持一致。

    隔离性(I):指多个用户并发访问数据库时,一个用户的事务不能被其他用户的事务所干扰,多个并发事务之间数据要相互隔离。

    持久性(D):指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,即使数据库发生故障也不应该对其有任何影响。

    Spring中事务管理的API---PlatformTransactionManager,TransactionDefinition,TransactionStatus:

     不使用隔离导致的三种安全性问题:

    脏读:一个事务读取了另一个事务改写但还未提交的数据,如果这些数据被回滚,则读到的数据是无效的。

    不可重复读:在同一事务中,多次读取同一数据返回的结果有所不同。

    幻读:一个事务读取了几行记录后,另一个事务插入一些记录,幻读就发生了,在后来的查询中,第一个事务就会发现有些原来没有的记录。

    图释:

    前三个为一类,比如第一个PROPAGATION_REQUIRED,表示如果aaa中有事务,则bbb运行aaa中的事务,如果aaa中没有事务,则bbb新建一个事务,也就是说aaa和bbb在一个事务中。

    后三个为一类,比如第一个PROPAGATION_REQUIRES_NEW,表示如果aaa中有事务,则bbb将当前aaa中的事务挂起,然后自己新建一个事务,也就是说aaa和bbb不在一个事务中。

    最后一个为一类,比如在执行aaa时,就会使用事务来设置一个保存点,再去执行bbb时,如果bbb没有异常,则aaa和bbb一起提交,如果bbb有异常,会根据自己的设定(回滚到保存点,或回滚到最初状态)来执行相应操作。

  • 相关阅读:
    教师节快乐!
    来自学长同学分享的学习方法
    刘奕佳: 我的职校新生活 | 班级日常分享
    19级:班级日常分享 | 一天一瞬间
    珍惜、珍爱!
    19级:班级日常分享 | 一天一瞬间
    204787 ,194787 |0001 1131 0001 4226 7035 ![2480 ]
    1-N的自然数中,少了一个,找出这个数 小强斋
    获取某一天之前或者之后多少天的日期 小强斋
    获取某一天之前或者之后多少天的日期 小强斋
  • 原文地址:https://www.cnblogs.com/cing/p/7458995.html
Copyright © 2011-2022 走看看