一. 传播 : 描述在当前情况条件下,后续的事或物是以何种状态或行为去呈现。

    思考情况 : (有与无)

         1)以事务运行
               条件1 : 当前有事务时,后续如何。

               条件2: 当前无事务时,后续如何。

         2)以无事务运行

              

   事务传播 -> 

         PROPAGATION_REQUIRED : 

                   情况1(当前有事务) : 后续全部加入此事务。

                   情况2(当前无事务) : 则新建事务,后续全部加入此事务。

         PROPAGATION_REQUIRES_NEW : 

                   情况1(当前有事务) : 则挂起当前事务,后续全部新建事务。每个事务相互独立互不干扰,发生异常时不影响其他的事务。

                   情况2(当前无事务) : 则新建事务,后续也全部创建新事务。每个事务相互独立互不干扰,发生异常时不影响其他的。

         PROPAGATION_SUPPORTS : 

                   情况1(当前有事务) : 后续则全部加入此事务。

                   情况2(当前无事务) : 后续则已无事务进行处理。

         PROPAGATION_MANDATORY : 

                   情况1(当前有事务) : 后续则全部加入此事务。

                   情况2(当前无事务) : 后续则抛出异常。

         

         PROPAGATION_NOT_SUPPORTED:

                   情况1(当前有事务) : 则挂起当前事务,后续已无事务进行处理。  

                   情况2(当前无事务) : 后续正常处理。  

          

         PROPAGATION_NEVER : 

                   情况1(当前有事务) : 非事务处理方式,后续则抛异常。

                   情况2(当前无事务) : 后续正常处理。

         PROPAGATION_NESTED : (只对DataSourceTransactionManager事务管理器起效) 

                   情况1(当前有事务) : 后续则以嵌套事务的方式,新建一个事务。拥有多个可以回滚的保存点,内部事务的回滚不会对外部事务造成影响。

                   情况2(当前无事务) : 则按REQUIRED属性执行,新建一个事务,后续则按有事务的方式进行处理。

二. 事务隔离级别 : 

         1)思考内容  : 多个事务同时读写同一条数据或同一批数据时的情况。

         

         2)基本词语概括思考内容会发生的情况 : 

                 情况1 : 事务A 读取了 事务B未提交的数据(假设事务B出现异常未继续提交或发生回滚,则数据是无用的) , 此情况简称 -- 脏读。

                 情况2  : 事务A发生两次读取某条记录,第一次该字段某个字段值为a,然后事务B修改了该字段值为b,接着事务A第二次读取该字段的值为b, 此情况简称 -- 不可重复读(该情况不是绝对性是属于错误的,按业务需求而定)。

                 情况3: 事务A发生两次读取一批数据(根据范围查询多条数据),根据条件第一次读取了10条数据,然后事务B在此范围数据中删除了1(N)条数据或新增了1条(N)数据,接着事务A读取到9条(N)数据或11条(N)数据 -- 此情况简称 -- 幻读。

        3)数据库设定的隔离级别 ->

                   级别0 : Read uncommitted(未提交读) -> 上诉3种情况都可能发生。

                   级别1  : Read committed(已提交读)   ->   可避免情况1,情况2,3可能发生。

                   级别2 : Repeatable read (可重复读) -> 可避免情况1,2,情况3可能发生。

                   级别3 : Serializable(可串行化) ->  最高级别可避免情况1,2,3情况。

    其中mysql默认隔离级别是 级别 -> Repeatable read。

    

05-20 22:19