zoukankan      html  css  js  c++  java
  • Spring核心知识点

    事务隔离级别

    事务隔离级别

    脏读:读取了其他事务修改但回滚(未提交)的数据
    不可重复读:A事务对同一条数据多次读取,其间B事务对该条数据进行了更改,导致A事务对同一条数据前后读取不一致
    幻读:在范围查询时,有其他事务在该范围中新增了数据,导致前后获取到的数据总数不一致

    事务传播特性

    事务传播特性
    失效场景:

    • 修饰非public方法:Spring Aop代理时,只会对public方法读取 @Transactional注解 开启事务配置
    • 类内部调用不触发事务:事务是基于动态代理实现的,一个类内部调用不会经过代理方法,无法触发织入的代码
    • 数据库引擎不支持事务

    PS: read-only属性 - 为了忽略那些不需要事务的方法,比如读取数据,可以设置 read-only 为 true

    tips:

    1. Spring事务和线程相关联,底层是一个ThreadLocal<Map<DataSource, Connection>>,一个线程一个链接一份事务。
    2. innoDB通过MVCC(快照读-多版本并发控制)和LBCC(当前读-基于锁的并发控制)解决了RR隔离级别下的幻读问题。
    3. 事务的挂起:TransactionManager实现事务是通过Aop代理控制connection,当需要挂起事务时,则获取新的connection进行操作即可。

    欢迎疑问、期待评论、感谢指点 -- kiqi,愿同您为友

    -- 星河有灿灿,愿与之辉

  • 相关阅读:
    Java数组(1):数组与多维数组
    Java内部类(5):应用例
    Java内部类(4):静态内部类&接口内部类
    Java内部类(3):局部内部类
    Java内部类(2):普通的成员内部类
    Java内部类(1):概述
    Java中验证编码格式的一种方法
    Mybatis高级结果映射
    Mybatis Guide
    Java泛型(11):潜在类型机制
  • 原文地址:https://www.cnblogs.com/kiqi/p/14346788.html
Copyright © 2011-2022 走看看