关于spring事务传播行为非事务方式的理解

关于 Spring 事务传播行为非事务方式的理解

在 Spring 中,事务传播行为是决定事务如何传播的一个特性。当当前代码执行需要调用另一个方法时,如何处理这个方法的事务就取决于事务传播行为的设置。

Spring 中有 7 种事务传播行为,分别是:

  1. PROPAGATION_REQUIRED(默认)

表示在调用方法执行时,如果当前已经存在一个事务,那么这个方法将在这个事务中运行。如果当前没有事务,它会启动一个新的事务。

简单来说,就是如果当前方法本身没有开启事务,那么它会新建一个事务,并且这个新建的事务将成为当前方法及其调用的方法们所在的共享事务。

示例1:

假设我们有 ServiceA 和 ServiceB 两个服务,它们都在一个数据库事务中运行。当 ServiceA 调用 ServiceB 时,如果此时 ServiceB 中的代码需要开启一个事务,那么这个事务将合并到 ServiceA 所在的事务中,以保证整个过程中只有一个事务在运行。

  1. PROPAGATION_SUPPORTS

表示在调用方法执行时,如果当前已经存在一个事务,那么这个方法将在这个事务中运行。如果当前没有事务,它会基于非事务方式运行,而不是启动一个新的事务。

简单来说,就是如果当前方法所在的调用栈中存在事务,那么这个方法将以事务方式运行。如果当前方法所在的调用栈中不存在事务,那么这个方法就不会开启事务,而是以非事务方式运行。

示例2:

假设我们有一个轻量级的系统,它没有对数据库事务进行特别要求。假设我们又有一个 ServiceC,它需要在数据库中修改数据。而这个 ServiceC 本身并不需要运行在事务中。这时候,我们可以把 ServiceC 的传播行为设置为 PROPAGATION_SUPPORTS,以便它可以根据上下文的需求运行在事务中或者非事务中。

以上就是关于 Spring 事务传播行为非事务方式的理解的攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:关于spring事务传播行为非事务方式的理解 - Python技术站

(0)
上一篇 2023年5月21日
下一篇 2023年5月21日

相关文章

  • mysql 常用命令用法总结脚本之家整理版

    标题 mysql 常用命令用法总结脚本之家整理版攻略 简介 该攻略为整理版 mysql 常用命令用法总结,旨在提供 mysql 数据库管理操作参考。 安装 推荐使用 apt-get 安装: sudo apt-get update && sudo apt-get install mysql-server -y 登录 MySQL 命令格式: my…

    database 2023年5月22日
    00
  • SQL 计算一年有多少天

    计算一年有多少天在SQL中可以使用日期函数和算术运算符来实现。下面是SQL计算一年有多少天的完整攻略: 使用日期函数和算术运算符计算一年有多少天 在SQL中,可以使用日期函数和算术运算符来计算一年有多少天。具体步骤如下: 使用DATEFROMPARTS函数获取今年的年份: sql SELECT DATEFROMPARTS(YEAR(GETDATE()), 1…

    database 2023年3月27日
    00
  • SQLServer2005 中的几个统计技巧

    SQL Server 2005 中的几个统计技巧 SQL Server 提供了多种统计技巧,以帮助我们在运行查询时分析数据的性能,并有效地进行调优。以下是 SQL Server 2005 中几个重要的统计技巧。 1. 查询计划 查询计划是 SQL Server 中为了评估、优化和执行 SQL 语句而生成的一个详细报告。查询计划提供了有关 SQL 查询的执行方…

    database 2023年5月21日
    00
  • Redhat 6.2 下 oracle 11g R2的安装详解第1/2页

    为了提高可读性,我将分为两部分进行讲解。 Redhat 6.2 下 oracle 11g R2的安装详解第1/2页(上) 1. 确认系统参数 在进行oracle 11g R2的安装前,需要确认系统的参数设置是否符合要求,这里需要特别关注以下参数: 1.1 内存和交换分区 oracle 11g R2对于系统内存和交换分区的要求非常高,建议开启至少2G的内存以及…

    database 2023年5月22日
    00
  • mysql中取系统当前时间,当前日期方便查询判定的代码

    要在 MySQL 中获取当前时间和日期,常见的方法是使用内置的 NOW() 函数或者使用 CURDATE() 和 CURTIME() 函数。 获取当前时间 要获取当前时间,可以使用 NOW() 函数,它返回当前日期和时间的值。例如: SELECT NOW(); 会返回如下格式的日期和时间: 2022-09-05 19:35:49 如果你想只获取当前时间的值,…

    database 2023年5月22日
    00
  • Mysql基础入门 轻松学习Mysql命令

    Mysql基础入门 轻松学习Mysql命令 Mysql是一种常用的关系型数据库管理系统,本文将带你入门学习Mysql的基本命令。 安装Mysql 首先需要安装Mysql,可以从官方网站上下载并安装适合自己操作系统的版本。在安装完成后,可以通过以下命令登录到Mysql的命令行界面: mysql -u username -p 其中username为用户名。执行上…

    database 2023年5月21日
    00
  • MyBatis-Plus结合Layui实现分页方法

    下面我将详细讲解“MyBatis-Plus结合Layui实现分页方法”的完整攻略,步骤如下: 1. 添加MyBatis-Plus和Layui相关依赖 在pom.xml文件中,添加以下两个依赖: <!– 添加MyBatis-Plus依赖 –> <dependency> <groupId>com.baomidou</…

    database 2023年5月21日
    00
  • SQL 插入新记录

    当我们需要往数据库中插入新记录时,就需要使用 SQL 的 INSERT INTO 语句。下面给出 SQL 插入新记录的完整攻略: 语法格式 INSERT INTO table_name (column1, column2, column3, …) VALUES (value1, value2, value3, …); 其中,table_name 是要…

    database 2023年3月27日
    00
合作推广
合作推广
分享本页
返回顶部