Transactional的7种Propagation 事务配置 开启 关闭 spring springboot mybatis

本文主要是介绍Transactional的7种Propagation 事务配置 开启 关闭 spring springboot mybatis,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

spring事务的配置

通常默认是REQUIRED, 如下:

@Transactional(propagation = Propagation.REQUIRED)
public void t1(){//业务代码
}

因为默认是 REQUIRED,所以通常不会显示写出来,如下:

@Transactional
public void t1(){//业务代码
}

通常会加上回滚,因为默认不回滚,如下:

@Transactional(rollbackFor = Exception.class)
public void t1(){//业务代码
}

但有时候不需要开启事务,即关闭事务,这时候可以使用 NOT_SUPPORTED,如下:

@Transactional(propagation = Propagation.NOT_SUPPORTED)
public void t1(){//业务代码
}

7种事务传播行为

 REQUIRED:支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。 

 SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行。 

 MANDATORY:支持当前事务,如果当前没有事务,就抛出异常。 

 REQUIRES_NEW:新建事务,如果当前存在事务,把当前事务挂起。 

 NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。 

 NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。 

 NESTED:支持当前事务,如果当前事务存在,则执行一个嵌套事务,如果当前没有事务,就新建一个事务。

事务解读 

配置的事务就是在这个方法执行结束后提交,即事务在开启他的那个方法结束后就提交。

在一个事务空间(即一个事务里面)查询到的数据是这个事务空间里面的数据(换句话就是你在这个事务里面添加的数据,在这个事务里是能够看到的,但其他事务不能看到这个数据)。

spring springboot mybatis transaction 开启事务 关闭事务 不使用事务_globalcoding的博客-CSDN博客

==========================分割线===========================

文章到此已经结束,以下是紫薯布丁

 @Transactional(propagation = Propagation.REQUIRED)
public void t1(){
    //业务代码
}

@Transactional
public void t1(){
    //业务代码
}

@Transactional(rollbackFor = Exception.class)
public void t1(){
    //业务代码
}

@Transactional(propagation = Propagation.NOT_SUPPORTED)
public void t1(){
    //业务代码
}

 REQUIRED:支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。 

 SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行。 

 MANDATORY:支持当前事务,如果当前没有事务,就抛出异常。 

 REQUIRES_NEW:新建事务,如果当前存在事务,把当前事务挂起。 

 NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。 

 NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。 

 NESTED:支持当前事务,如果当前事务存在,则执行一个嵌套事务,如果当前没有事务,就新建一个事务。

这篇关于Transactional的7种Propagation 事务配置 开启 关闭 spring springboot mybatis的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/234072

相关文章

gitlab安装及邮箱配置和常用使用方式

《gitlab安装及邮箱配置和常用使用方式》:本文主要介绍gitlab安装及邮箱配置和常用使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装GitLab2.配置GitLab邮件服务3.GitLab的账号注册邮箱验证及其分组4.gitlab分支和标签的

Java实现删除文件中的指定内容

《Java实现删除文件中的指定内容》在日常开发中,经常需要对文本文件进行批量处理,其中,删除文件中指定内容是最常见的需求之一,下面我们就来看看如何使用java实现删除文件中的指定内容吧... 目录1. 项目背景详细介绍2. 项目需求详细介绍2.1 功能需求2.2 非功能需求3. 相关技术详细介绍3.1 Ja

springboot项目中整合高德地图的实践

《springboot项目中整合高德地图的实践》:本文主要介绍springboot项目中整合高德地图的实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一:高德开放平台的使用二:创建数据库(我是用的是mysql)三:Springboot所需的依赖(根据你的需求再

spring中的ImportSelector接口示例详解

《spring中的ImportSelector接口示例详解》Spring的ImportSelector接口用于动态选择配置类,实现条件化和模块化配置,关键方法selectImports根据注解信息返回... 目录一、核心作用二、关键方法三、扩展功能四、使用示例五、工作原理六、应用场景七、自定义实现Impor

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

MySQL MCP 服务器安装配置最佳实践

《MySQLMCP服务器安装配置最佳实践》本文介绍MySQLMCP服务器的安装配置方法,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下... 目录mysql MCP 服务器安装配置指南简介功能特点安装方法数据库配置使用MCP Inspector进行调试开发指

SpringBoot整合Flowable实现工作流的详细流程

《SpringBoot整合Flowable实现工作流的详细流程》Flowable是一个使用Java编写的轻量级业务流程引擎,Flowable流程引擎可用于部署BPMN2.0流程定义,创建这些流程定义的... 目录1、流程引擎介绍2、创建项目3、画流程图4、开发接口4.1 Java 类梳理4.2 查看流程图4

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

Java对异常的认识与异常的处理小结

《Java对异常的认识与异常的处理小结》Java程序在运行时可能出现的错误或非正常情况称为异常,下面给大家介绍Java对异常的认识与异常的处理,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参... 目录一、认识异常与异常类型。二、异常的处理三、总结 一、认识异常与异常类型。(1)简单定义-什么是

Redis Cluster模式配置

《RedisCluster模式配置》:本文主要介绍RedisCluster模式配置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录分片 一、分片的本质与核心价值二、分片实现方案对比 ‌三、分片算法详解1. ‌范围分片(顺序分片)‌2. ‌哈希分片3. ‌虚