爆款云主机2核4G限时秒杀,88元/年起!
查看详情

活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 618智算钜惠季 爆款云主机2核4G限时秒杀,88元/年起!
  • 免费体验DeepSeek,上天翼云息壤 NEW 新老用户均可免费体验2500万Tokens,限时两周
  • 云上钜惠 HOT 爆款云主机全场特惠,更有万元锦鲤券等你来领!
  • 算力套餐 HOT 让算力触手可及
  • 天翼云脑AOne NEW 连接、保护、办公,All-in-One!
  • 中小企业应用上云专场 产品组合下单即享折上9折起,助力企业快速上云
  • 息壤高校钜惠活动 NEW 天翼云息壤杯高校AI大赛,数款产品享受线上订购超值特惠
  • 天翼云电脑专场 HOT 移动办公新选择,爆款4核8G畅享1年3.5折起,快来抢购!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

智算服务

打造统一的产品能力,实现算网调度、训练推理、技术架构、资源管理一体化智算服务
智算云(DeepSeek专区)
科研助手
  • 算力商城
  • 应用商城
  • 开发机
  • 并行计算
算力互联调度平台
  • 应用市场
  • 算力市场
  • 算力调度推荐
一站式智算服务平台
  • 模型广场
  • 体验中心
  • 服务接入
智算一体机
  • 智算一体机
大模型
  • DeepSeek-R1-昇腾版(671B)
  • DeepSeek-R1-英伟达版(671B)
  • DeepSeek-V3-昇腾版(671B)
  • DeepSeek-R1-Distill-Llama-70B
  • DeepSeek-R1-Distill-Qwen-32B
  • Qwen2-72B-Instruct
  • StableDiffusion-V2.1
  • TeleChat-12B

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入云市场创新解决方案
办公协同
  • WPS云文档
  • 安全邮箱
  • EMM手机管家
  • 智能商业平台
财务管理
  • 工资条
  • 税务风控云
企业应用
  • 翼信息化运维服务
  • 翼视频云归档解决方案
工业能源
  • 智慧工厂_生产流程管理解决方案
  • 智慧工地
建站工具
  • SSL证书
  • 新域名服务
网络工具
  • 翼云加速
灾备迁移
  • 云管家2.0
  • 翼备份
资源管理
  • 全栈混合云敏捷版(软件)
  • 全栈混合云敏捷版(一体机)
行业应用
  • 翼电子教室
  • 翼智慧显示一体化解决方案

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云云市场合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
  • 天翼云EasyCoding平台
天翼云培训认证
  • 天翼云学堂
  • 天翼云市场商学院
天翼云合作计划
  • 云汇计划
天翼云东升计划
  • 适配中心
  • 东升计划
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
开放能力
  • EasyCoding敏捷开发平台
培训与认证
  • 天翼云学堂
  • 天翼云认证
魔乐社区
  • 魔乐社区

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 建议与反馈
  • 用户体验官
  • 服务保障
  • 客户公告
  • 会员中心
增值服务
  • 红心服务
  • 首保服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 智算服务
  • 产品
  • 解决方案
  • 应用商城
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心

      【SpringBoot】事务的隔离级别、Spring的事务传播机制

      首页 知识中心 软件开发 文章详情页

      【SpringBoot】事务的隔离级别、Spring的事务传播机制

      2023-04-25 10:21:49 阅读次数:149

      Spring,SpringBoot,事务

       

      一、事务 隔离级别

      事务特性回顾

      事务有4 ⼤特性(ACID),原⼦性、持久性、⼀致性、隔离性,具体概念如下:

      • 原⼦性:⼀个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执⾏过程中发⽣错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执⾏过⼀样。

      • ⼀致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写⼊的资料必须完 全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以⾃发性地完成预定的⼯

      作

      • 持久性:事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。

      • 隔离性:数据库允许多个并发事务同时对其数据进⾏读写和修改的能⼒,隔离性可以防⽌多个事务并发执⾏时由于交叉执⾏⽽导致数据的不⼀致。

      事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read) 和 串⾏化(Serializable)


      上⾯ 4 个属性,可以简称为ACID

      1. 原⼦性(Atomicity,或称不可分割性)
      2. ⼀致性(Consistency)
      3. 隔离性(Isolation,⼜称独⽴性)
      4. 持久性(Durability)

      这 4 种特性中,只有隔离性(隔离级别)是可以设置的。


      为什么要设置事务的隔离级别?

      设置事务的隔离级别是⽤来保障多个并发事务执⾏更可控,更符合操作者预期的。

      什么是可控呢?

      ⽐如近⼏年⽐较严重的新冠病毒,我们会把直接接触到确证病例的⼈员隔离到酒店,⽽把间接接触者(和直接接触着但未确诊的⼈)隔离在⾃⼰的家中,也就是针对不同的⼈群,采取不同的隔离级别,这 种隔离⽅式就和事务的隔离级别类似,都是采取某种⾏动让某个事件变的 更可控 。⽽事务的隔离级别就是为了防⽌,其他的事务影响当前事务执⾏的⼀种策略。


      Spring 中设置事务隔离级别

      Spring 中事务隔离级别可以通过 @Transactional 中的 isolation 属性进⾏设置

      具体操作如下图所示:

      【SpringBoot】事务的隔离级别、Spring的事务传播机制


      ① MySQL 事务隔离级别有 4 种

      1. READ UNCOMMITTED:读未提交,也叫未提交读,该隔离级别的事务可以看到其他事务中未提交的数据。该隔离级别因为可以读取到其他事务中未提交的数据,⽽未提交的数据可能会发⽣回滚, 因此我们把该级别读取到的数据称之为脏数据,把这个问题称之为脏读。

      2. READ COMMITTED:读已提交,也叫提交读,该隔离级别的事务能读取到已经提交事务的数据, 因此它不会有脏读问题。但由于在事务的执⾏中可以读取到其他事务提交的结果,所以在不同时间 的相同 SQL 查询中,可能会得到不同的结果,这种现象叫做不可重复读。

      3. REPEATABLE READ:可重复读,是 MySQL 的默认事务隔离级别,它能确保同⼀事务多次查询的结果⼀致。但也会有新的问题,⽐如此级别的事务正在执⾏时,另⼀个事务成功的插⼊了某条数据,但因为它每次查询的结果都是⼀样的,所以会导致查询不到这条数据,⾃⼰重复插⼊时⼜失败(因为唯⼀约束的原因)。明明在事务中查询不到这条信息,但⾃⼰就是插⼊不进去,这就叫幻读(Phantom Read)。

      4. SERIALIZABLE:串行化(序列化),事务最⾼隔离级别,它会强制事务排序,使之不会发⽣冲突,从⽽解决 了脏读、不可重复读和幻读问题,但因为执⾏效率低,所以真正使⽤的场景并不多。

      【SpringBoot】事务的隔离级别、Spring的事务传播机制

      • 脏读:⼀个事务读取到了另⼀个事务修改的数据之后,后⼀个事务⼜进⾏了回滚操作,从⽽导致第⼀个事务读取的数据是错误的。

      • 不可重复读:⼀个事务两次查询得到的结果不同,因为在两次查询中间,有另⼀个事务把数据修

      改了。

      • 幻读:⼀个事务两次查询中得到的结果集不同,因为在两次查询中另⼀个事务有新增了⼀部分数据。

      在数据库中通过以下 SQL 查询全局事务隔离级别和当前连接的事务隔离级别:

      select @@global.tx_isolation,@@tx_isolation;
      

      以上 SQL 的执⾏结果如下:

      【SpringBoot】事务的隔离级别、Spring的事务传播机制


      ②Spring 事务隔离级别有 5 种

      Spring 中事务隔离级别包含以下 5 种:

      1. Isolation.DEFAULT:以连接的数据库的事务隔离级别为主。

      2. Isolation.READ_UNCOMMITTED:读未提交,可以读取到未提交的事务,存在脏读。

      3. Isolation.READ_COMMITTED:读已提交,只能读取到已经提交的事务,解决了脏读,存在不可重 复读。

      4. Isolation.REPEATABLE_READ:可重复读,解决了不可重复读,但存在幻读(MySQL默认级别)。

      5. Isolation.SERIALIZABLE:串⾏化,可以解决所有并发问题,但性能太低。

      从上述介绍可以看出,相⽐于 MySQL 的事务隔离级别,Spring 的事务隔离级别只是多了⼀个Isolation.DEFAULT(以数据库的全局事务隔离级别为主)


      Spring 中事务隔离级别只需要设置 @Transactional ⾥的 isolation 属性即可,具体实现代码如下:

      @RequestMapping("/save")
      @Transactional(isolation = Isolation.SERIALIZABLE) // 设置事务的隔离级别
      public Object save(User user) {
          // 业务实现
      }
      

      二、Spring 事务传播机制

      事务传播机制是什么?

      Spring 事务传播机制定义了多个包含了事务的⽅法,相互调⽤时,事务是如何在这些⽅法间进⾏传递的。


      为什么需要事务传播机制?

      事务隔离级别是保证多个并发事务执⾏的可控性的(稳定性的),⽽事务传播机制是保证⼀个事务在多个调⽤⽅法间的可控性的(稳定性的)

      例⼦:

      像新冠病毒⼀样,它有不同的隔离⽅式(酒店隔离还是居家隔离),是为了保证疫情可控,然⽽在每个⼈的隔离过程中,会有很多个执⾏的环节,⽐如酒店隔离,需要负责⼈员运送、物品运送、 消杀原⽣活区域、定时核算检查和定时送餐等很多环节,⽽事务传播机制就是保证⼀个事务在传递过 程中是可靠性的,回到本身案例中就是保证每个⼈在隔离的过程中可控的


      事务隔离级别解决的是多个事务同时调⽤⼀个数据库的问题

      如下图所示:

      【SpringBoot】事务的隔离级别、Spring的事务传播机制

      事务传播机制解决的是⼀个事务在多个节点(⽅法)中传递的问题

      如下图所示:

      【SpringBoot】事务的隔离级别、Spring的事务传播机制


      事务传播机制有哪些?

      Spring 事务传播机制包含以下 7 种:

      1. Propagation.REQUIRED:默认的事务传播级别,它表示如果当前存在事务,则加⼊该事务;如果当前没有事务,则创建⼀个新的事务。

      2. Propagation.SUPPORTS:如果当前存在事务,则加⼊该事务;如果当前没有事务,则以⾮事务的⽅式继续运⾏。

      3. Propagation.MANDATORY:(mandatory:强制性)如果当前存在事务,则加⼊该事务;如果当前没有事务,则抛出异常。

      4. Propagation.REQUIRES_NEW:表示创建⼀个新的事务,如果当前存在事务,则把当前事务挂起。也就是说不管外部⽅法是否开启事务,Propagation.REQUIRES_NEW 修饰的内部⽅法会新开启⾃⼰的事务,且开启的事务相互独⽴,互不⼲扰。

      5. Propagation.NOT_SUPPORTED:以⾮事务⽅式运⾏,如果当前存在事务,则把当前事务挂起。

      6. Propagation.NEVER:以⾮事务⽅式运⾏,如果当前存在事务,则抛出异常。

      7. Propagation.NESTED:如果当前存在事务,则创建⼀个事务作为当前事务的嵌套事务来运⾏;如 果当前没有事务,则该取值等价于 PROPAGATION_REQUIRED。

      【SpringBoot】事务的隔离级别、Spring的事务传播机制


      以上 7 种传播⾏为,可以根据是否⽀持当前事务分为以下 3 类:

      【SpringBoot】事务的隔离级别、Spring的事务传播机制

      以情侣关系为例来理解以上分类:

      【SpringBoot】事务的隔离级别、Spring的事务传播机制


      Spring 事务传播机制使用 及 各种场景演示

      ① 支持当前事务(REQUIRED)

      以下代码实现中,先开启事务先成功插⼊⼀条⽤户数据,然后再执⾏⽇志报错,⽽在⽇志报错是发⽣了 异常。

      观察 propagation = Propagation.REQUIRED 的执⾏结果。

      @RestController
      public class UserController {
          @Resource
          private UserService userService;
          @Resource
          private LogService logService;
          @RequestMapping("/save")
          @Transactional(propagation = Propagation.REQUIRED)
          public Object save(User user) {
              // 插⼊⽤户操作
              userService.save(user);
              // 插⼊⽇志
              logService.saveLog("⽤户插⼊:" + user.getName());
              return true;
         }
      }
      

      UserService 实现代码如下:插⼊⼀条⽤户数据

      @Service
      public class UserService {
          @Resource
          private UserMapper userMapper;
          @Transactional(propagation = Propagation.REQUIRED)
          public int save(User user) {
              System.out.println("执⾏ save ⽅法.");
              return userMapper.save(user);
         }
      }
      
      

      LogService 实现代码如下: 出现异常

      @Service
      public class LogService {
          @Resource
          private LogMapper logMapper;
          @Transactional(propagation = Propagation.REQUIRED)
          public int saveLog(String content) {
              // 出现异常
              int i = 10 / 0;
              return logMapper.saveLog(content);
         }
      }
      

      执⾏结果:

      程序报错,数据库没有插⼊任何数据。

      执⾏流程描述:

      1. UserService 中的保存⽅法正常执⾏完成。
      2. LogService 保存⽇志程序报错,因为使⽤的是 Controller 中的事务,所以整个事务回滚。
      3. 数据库中没有插⼊任何数据,也就是步骤 1 中的⽤户插⼊⽅法也回滚了。

      ② 不⽀持当前事务(REQUIRES_NEW)

      UserController 类中的代码不变,将添加⽤户和添加⽇志的⽅法修改为 REQUIRES_NEW 不⽀持当前事务,重新创建事务,观察执⾏结果:

      UserController 类中的代码不变:

      @RequestMapping("/save")
      @Transactional
      public Object save(User user) {
          // 插⼊⽤户操作
          userService.save(user);
          // 插⼊⽇志
          logService.saveLog("⽤户插⼊:" + user.getName());
          return true;
      }
      

      UserService 实现代码:⽅法修改为 REQUIRES_NEW

      @Service
      public class UserService {
          @Resource
          private UserMapper userMapper;
          @Transactional(propagation = Propagation.REQUIRES_NEW)
          public int save(User user) {
              System.out.println("执⾏ save ⽅法.");
              return userMapper.save(user);
         }
      }
      

      LogService 实现代码:⽅法修改为 REQUIRES_NEW

      @Service
      public class LogService {
          @Resource
          private LogMapper logMapper;
          @Transactional(propagation = Propagation.REQUIRES_NEW)
          public int saveLog(String content) {
              // 出现异常
              int i = 10 / 0;
              return logMapper.saveLog(content);
         }
      }
      

      程序执⾏结果:

      User 表中成功插⼊了数据

      Log 表执⾏失败,但没影响 UserController 中的事务


      ③ 不⽀持当前事务 (NEVER) 抛异常

      UserController 实现代码:

      @RequestMapping("/save")
      @Transactional
      public Object save(User user) {
          // 插⼊⽤户操作
          userService.save(user);
          return true;
      }
      

      UserService 实现代码:

      @Transactional(propagation = Propagation.NEVER)
      public int save(User user) {
          System.out.println("执⾏ save ⽅法.");
          return userMapper.save(user);
      }
      

      程序执⾏结果:

      程序执⾏报错,⽤户表未添加任何数据。


      ④ NESTED 嵌套事务

      UserController 实现代码如下:

      @RequestMapping("/save")
      @Transactional
      public Object save(User user) {
          // 插⼊⽤户操作
          userService.save(user);
          return true;
      }
      

      UserService 实现代码如下:

      @Transactional(propagation = Propagation.NESTED)
      public int save(User user) {
          int result = userMapper.save(user);
          System.out.println("执⾏ save ⽅法.");
          // 插⼊⽇志
          logService.saveLog("⽤户插⼊:" + user.getName());
          return result;
      }
      

      LogService 实现代码如下:

      @Transactional(propagation = Propagation.NESTED)
      public int saveLog(String content) {
          // 出现异常
          int i = 10 / 0;
          return logMapper.saveLog(content);
      }
      
      

      程序执⾏结果:

      ⽤户表和⽇志表都没有添加任何数据。

      执⾏流程描述:

      1.UserController 中调⽤了 UserService 的添加⽅法,UserService 使⽤ NESTED 修饰循环嵌套了 UserController 的事务,并成功执⾏了添加⽅法。

      2.UserService 中调⽤了 LogService 的添加⽅法,LogService 使⽤ NESTED 修饰循环嵌套了上⼀个 调⽤类的事务,执⾏了添加⽅法,但在执⾏的过程中出现了异常,回顾当前事务,⽇志添加失败。

      3.因为是嵌套事务,所以⽇志添加回顾之后,往上找调⽤它的⽅法和事务回滚了⽤户添加,所以⽤户 添加也失败了,所以最终的结果是⽤户表和⽇志表都没有添加任何数据。


      嵌套事务(NESTED)和加⼊事务(REQUIRED )的区别:

      • 整个事务如果全部执⾏成功,⼆者的结果是⼀样的。

      • 如果事务执⾏到⼀半失败了,那么加⼊事务整个事务会全部回滚;⽽嵌套事务会局部回滚,不会影响上⼀个⽅法中执⾏的结果。


      先来看嵌套事务 NESTED 示例

      示例:使⽤ UserController 调⽤ UserService,UserService 中调⽤ LogService,⽽UserService 和 LogService 中的事务传播特性都是 NESTED,具体实现代码如下。

      UserController 实现代码如下:

      @RequestMapping("/save")
      @Transactional
      public Object save(User user) {
          // 插⼊⽤户操作
          userService.save(user);
          return true;
      }
      

      UserService 实现代码如下:

      @Transactional(propagation = Propagation.NESTED)
      public int save(User user) {
          int result = userMapper.save(user);
          System.out.println("执⾏ save ⽅法.");
          // 插⼊⽇志
          logService.saveLog("⽤户插⼊:" + user.getName());
          return result;
      }
      

      LogService 实现代码如下:

      @Transactional(propagation = Propagation.NESTED)
      public int saveLog(String content) {
          // 添加⽇志
          int result = logMapper.saveLog(content);
          try {
              // 出现异常
              int i = 10 / 0;
         } catch (Exception e) {
              // 回滚当前事务
      	TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
         }
          return result;
      }
      

      在 LogService 进⾏当前事务的回滚操作,最终执⾏效果是:

      • User 表中成功添加数据
      • Log 表中没有添加数据

      说明:

      Log 中的事务已经回滚,但是嵌套事务不会回滚嵌套之前的事务,也就是说嵌套事务可以实现部 分事务回滚


      加⼊事务 REQUIRED 示例演示

      把 NESTED 传播特性改为 REQUIRED

      UserController 中的实现代码不变:

      @RequestMapping("/save")
      @Transactional
      public Object save(User user) {
          // 插⼊⽤户操作
          userService.save(user);
          return true;
      }
      

      UserService 中的实现代码如下:

      @Transactional(propagation = Propagation.REQUIRED)
      public int save(User user) {
          int result = userMapper.save(user);
          System.out.println("执⾏ save ⽅法.");
          // 插⼊⽇志
          logService.saveLog("⽤户插⼊:" + user.getName());
          return result;
      }
      

      ⾸先添加⽤户没有任何问题,⽤户添加成功。

      LogService 中的实现代码如下:

      @Transactional(propagation = Propagation.REQUIRED)
      public int saveLog(String content) {
          // 添加⽇志
          int result = logMapper.saveLog(content);
          try {
              // 出现异常
              int i = 10 / 0;
         } catch (Exception e) {
              // 回滚当前事务  
      		TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
         }
          return result;
      }
      

      添加⽇志报错了,将 LogService 中的事务回滚。

      最终程序的执⾏结果:

      ⽤户表和⽇志表中都没有添加任何数据,说明整个事务都回滚了。也就是说 REQUIRED 如果回滚就是 回滚所有事务,不能实现部分事务的回滚。

      嵌套事务只所以能够实现部分事务的回滚,是因为事务中有⼀个保存点(savepoint)的概念,嵌套事务 进⼊之后相当于新建了⼀个保存点,⽽滚回时只回滚到当前保存点,因此之前的事务是不受影响的,这 ⼀点可以在 MySQL 的官⽅⽂档汇总找到相应的资料:

      MySQL官方文档

      【SpringBoot】事务的隔离级别、Spring的事务传播机制

      ⽽ REQUIRED 是加⼊到当前事务中,并没有创建事务的保存点,因此出现了回滚就是整个事务回滚, 这就是嵌套事务和加⼊事务的区别。

      嵌套事务(NESTED)和加⼊事务(REQUIRED )的区别:

      • 整个事务如果全部执⾏成功,⼆者的结果是⼀样的。

      • 如果事务执⾏到⼀半失败了,那么加⼊事务整个事务会全部回滚;⽽嵌套事务会局部回滚,不会影响上⼀个⽅法中执⾏的结果。


      总结

      Spring 事务使⽤中,重点的内容有 3 个:

      1. 在 Spring 项⽬中使⽤事务,⽤两种⽅法⼿动操作和声明式⾃动提交,其中后者使⽤的最多,在⽅法上添加 @Transactional 就可以实现了。

      2. 设置事务的隔离级别 @Transactional(isolation = Isolation.SERIALIZABLE),Spring 中的事务隔离级别有 5 种。

      3. 设置事务的传播机制 @Transactional(propagation = Propagation.REQUIRED),Spring 中的事务传播级别有 7 种。


      版权声明:本文内容来自第三方投稿或授权转载,原文地址:https://blog.51cto.com/panyujie/5631111,作者:Perceus,版权归原作者所有。本网站转在其作品的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如因作品内容、版权等问题需要同本网站联系,请发邮件至ctyunbbs@chinatelecom.cn沟通。

      上一篇:python学习——进程和线程

      下一篇:leetcode(Java版)-第1题-两数之和

      相关文章

      2025-05-16 09:15:10

      52.介绍AOP有几种实现方式

      52.介绍AOP有几种实现方式

      2025-05-16 09:15:10
      gt , lt , Spring
      2025-05-14 10:02:58

      java项目多端数据同步解决方案

      多端数据同步是指在多个设备(例如桌面应用、移动应用、Web应用)之间保持数据的一致性。

      2025-05-14 10:02:58
      java , Spring , WebSocket , 同步 , 数据 , 版本号
      2025-05-14 10:02:48

      SQL Server 事务日志体系结构1--基本术语

      事务包括对数据库的一次更改或一系列更改。它有一个明确开始和明确结束。开始时使用BEGIN TRANSACTION语句,或者SQL Server会自动为您开始一个事务。

      2025-05-14 10:02:48
      Server , SQL , 事务 , 数据库 , 日志 , 磁盘
      2025-05-13 09:49:12

      JDBC事务管理、四大特征(ACID)、事务提交与回滚、MySQL事务管理

      JDBC(Java Database Connectivity)事务是指一系列作为单个逻辑工作单元执行的数据库操作,这些操作要么全部成功——>提交,要么全部失败——>回滚,从而确保数据的一致性和完整性。

      2025-05-13 09:49:12
      MySQL , 事务 , 执行 , 提交 , 操作 , 数据库
      2025-05-09 08:50:35

      SpringBoot学习(1)

      Spring Boot是Spring提供的一个子项目,用于快速构建Spring应用程序。

      2025-05-09 08:50:35
      Spring , 依赖 , 应用程序 , 部署 , 配置 , 配置文件
      2025-05-09 08:20:32

      系统架构——Spring Framework

      Spring Framework 是 Spring 生态圈中最基础的项目。其它所有的项目的都是在它的基础上运行使用。

      2025-05-09 08:20:32
      AOP , Data , Spring , 学习 , 模块
      2025-05-07 09:08:54

      springboot系列教程(十二):基于转账案例,演示事务管理操作

      springboot系列教程(十二):基于转账案例,演示事务管理操作

      2025-05-07 09:08:54
      spring , 事务 , 接口 , 管理器 , 配置
      2025-05-06 09:19:51

      springboot系列教程(三十二):SpringBoot 教程之处理异步请求

      springboot系列教程(三十二):SpringBoot 教程之处理异步请求

      2025-05-06 09:19:51
      Spring , 异步 , 方法 , 返回值
      2025-05-06 09:19:12

      Spring多线程事务 能否保证事务的一致性(同时提交、同时回滚)?

      Spring的事务信息是存在ThreadLocal中的Connection, 所以一个线程永远只能有一个事务

      2025-05-06 09:19:12
      Spring , 事务 , 多线程 , 线程
      2025-04-22 09:28:19

      61. Spring事务传播行为实现原理

      61. Spring事务传播行为实现原理

      2025-04-22 09:28:19
      Spring , ThreadLocal , 事务
      查看更多
      推荐标签

      作者介绍

      天翼云小翼
      天翼云用户

      文章

      33561

      阅读量

      5227827

      查看更多

      最新文章

      52.介绍AOP有几种实现方式

      2025-05-16 09:15:10

      java项目多端数据同步解决方案

      2025-05-14 10:02:58

      系统架构——Spring Framework

      2025-05-09 08:20:32

      springboot系列教程(十二):基于转账案例,演示事务管理操作

      2025-05-07 09:08:54

      springboot系列教程(三十二):SpringBoot 教程之处理异步请求

      2025-05-06 09:19:51

      Spring多线程事务 能否保证事务的一致性(同时提交、同时回滚)?

      2025-05-06 09:19:12

      查看更多

      热门文章

      SpringBoot 单元测试(三十六)

      2024-09-25 10:14:09

      Ajax提交数据SpringBoot后台报错“HttpMessageNotReadableException: JSON parse error: Cannot construct instance“

      2023-06-13 08:29:06

      AOP 中 获取常见的各种参数方法合集

      2023-05-15 10:01:00

      使用Spring的AOP时报错“ClassCastException: com.sun.proxy.$Proxy5 cannot be cast to com.demo.aop.Target“

      2023-06-14 09:12:07

      Ajax续

      2023-07-11 08:55:43

      Spring-AOP

      2023-05-25 14:43:25

      查看更多

      热门标签

      java Java python 编程开发 代码 开发语言 算法 线程 Python html 数组 C++ 元素 javascript c++
      查看更多

      相关产品

      弹性云主机

      随时自助获取、弹性伸缩的云服务器资源

      天翼云电脑(公众版)

      便捷、安全、高效的云电脑服务

      对象存储

      高品质、低成本的云上存储服务

      云硬盘

      为云上计算资源提供持久性块存储

      查看更多

      随机文章

      SpringBoot入门二十二,使用Validation进行参数校验

      找不到FeignClient Bean对象的解决方法(两个)

      使用Spring Boot和PostgreSQL构建高级查询

      SpringCloud-技术专区-从zuul过滤器发送重定向

      详细分析Spring中的@Configuration注解基本知识(附Demo)

      Spring MVC 中的http Caching

      • 7*24小时售后
      • 无忧退款
      • 免费备案
      • 专家服务
      售前咨询热线
      400-810-9889转1
      关注天翼云
      • 旗舰店
      • 天翼云APP
      • 天翼云微信公众号
      服务与支持
      • 备案中心
      • 售前咨询
      • 智能客服
      • 自助服务
      • 工单管理
      • 客户公告
      • 涉诈举报
      账户管理
      • 管理中心
      • 订单管理
      • 余额管理
      • 发票管理
      • 充值汇款
      • 续费管理
      快速入口
      • 天翼云旗舰店
      • 文档中心
      • 最新活动
      • 免费试用
      • 信任中心
      • 天翼云学堂
      云网生态
      • 甄选商城
      • 渠道合作
      • 云市场合作
      了解天翼云
      • 关于天翼云
      • 天翼云APP
      • 服务案例
      • 新闻资讯
      • 联系我们
      热门产品
      • 云电脑
      • 弹性云主机
      • 云电脑政企版
      • 天翼云手机
      • 云数据库
      • 对象存储
      • 云硬盘
      • Web应用防火墙
      • 服务器安全卫士
      • CDN加速
      热门推荐
      • 云服务备份
      • 边缘安全加速平台
      • 全站加速
      • 安全加速
      • 云服务器
      • 云主机
      • 智能边缘云
      • 应用编排服务
      • 微服务引擎
      • 共享流量包
      更多推荐
      • web应用防火墙
      • 密钥管理
      • 等保咨询
      • 安全专区
      • 应用运维管理
      • 云日志服务
      • 文档数据库服务
      • 云搜索服务
      • 数据湖探索
      • 数据仓库服务
      友情链接
      • 中国电信集团
      • 189邮箱
      • 天翼企业云盘
      • 天翼云盘
      ©2025 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
      公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
      • 用户协议
      • 隐私政策
      • 个人信息保护
      • 法律声明
      备案 京公网安备11010802043424号 京ICP备 2021034386号