• Spring boot 事务


    Spring 事务简介

    事务在Spring的一大特性,Spring中事务管理分为 编程式事务声明式事务,其中声明式的事务是基于 AOP的动态代码方式与与业务进行解耦的方式,一般在Spring中使用@Transactional 注解方式

    • 默认配置下Spring 只会回滚运行时的异常,继承属于RuntimeException 的异常 或 Error
    • @Transcation 注解只能 应用在 Public 的方法中
    • MySQL 默认的MYISAM 数据库引擎 不支持事务和外键, InnoDB存储支持事务
    	database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
    
    • 1

    事务传播方式和隔离级别

    • propagation事务传播性为
    1. REQUIRED(默认值):如果当前存在事务,则加入该事务,如果当前不存在事务,则创建一个新的事务。required(必须的)。
    2. SUPPORTS:如果当前存在事务,则加入该事务;如果当前不存在事务,则以非事务方式继续运行。supports(支持的)
    3. MANDATORY:如果当前存在事务,则加入该事务;如果当前不存在事务,则抛出异常。mandatory(强制的)
    4. REQUIRES_NEW:重新创建一个新的事务,如果当前存在事务,暂停当前的事务。requires_new(依赖新的)
    5. NOT_SUPPORTED:以非事务的方式运行,如果当前存在事务,暂停当前的事务。not_supported(不支持的)
    6. NEVER:以非事务的方式运行,如果当前存在事务,则抛出异常。never(从不)
    7. NESTED:和 REQUIRED 效果一样。nested(嵌套)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 事务隔离 isolation :默认使用底层数据库的隔离级别
    DEFAULT(默认值):使用底层数据库默认的隔离级别。
    READ_UNCOMMITTED:未提交读。无法防止。
    READ_COMMITTED:可提交读。可以防止脏读。
    REPEATABLE_READ:可重复读。可以防止脏读、可重复读。mysql 默认隔离级别。
    SERIALIZABLE:串行事务。最高事务隔离级别,可以防止脏读、可重复读、幻读。
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    事务失效的场景

    失效场景描述
    @Transaction应用标注在非public方法上@Transaction事物只能在 Public上
    注解propagation 传播属性设置错误类与类之间相互调用,被调用者可以新开启事物,不走老事物
    同类方法中内部调用事务管理基于动态代码逻辑实现的,类中内部调用走的this对象调用方法,绕过东塔代理, 事务失效最常见方式
    try…catch 见异常进行拦截捕获使用 try…catch 进行异常处理 不在进行事务回滚,异常必须要往外抛
    数据库的引擎不支持事务导致的Spring DATA JPS 默认使用MYSQL MyISAM 作为存储引擎,切换成 INNODB 作为数据引擎
  • 相关阅读:
    交换机的工作原理以及搭建局域网划分VLAN
    初级网络工程师之从入门到入狱(二)
    《Linux高性能服务器编程》--高级I/O函数
    xtrabackup全备 增备
    2022-04-03 排查问题要知识沉淀
    Primavera Unifier Project Control 项目控制要点
    基于视觉重定位的室内AR导航APP的大创项目思路(2):改进的项目思路——建图和定位分离
    随机用户名获取易语言代码
    【加载自定义数据csv/image】HuggingFace的datasets库中load_dataset
    android studio开发app实例-Springboot实现的Android的学习生活交流APP
  • 原文地址:https://blog.csdn.net/qq_27217017/article/details/125634144