首页 > 其他分享 >4月17日总结

4月17日总结

时间:2023-04-22 10:56:59浏览次数:32  
标签:总结 transaction1 17 插入 user transaction2 catch User

Spring中事务嵌套这么用一定得注意了!!
前言

最近项目上有一个使用事务相对复杂的业务场景报错了。在绝大多数情况下,都是风平浪静,没有问题。其实内在暗流涌动,在有些异常情况下就会报错,这种偶然性的问题很有可能就会在暴露到生产上造成事故,那究竟是怎么回事呢?
问题描述

我们用一个简单的例子模拟下,大家也可以看看下面这段代码输出的结果是什么。

在类SecondTransactionService定义一个简单接口transaction2,插入一个用户,同时必然会抛出错误

@Override
@Transactional(rollbackFor = Exception.class)
public void transaction2() {
System.out.println("do transaction2.....");
User user = new User("tx2", "111", 18);
// 插入一个用户
userService.insertUser(user);
// 跑错了
throw new RuntimeException();
}

在另外一个类FirstTransactionService定义一个接口transaction1,它调用transaction2方法,同时做了try catch处理

@Override
@Transactional(rollbackFor = Exception.class)
public void transaction1() {
System.out.println("do transaction1 .......");
try {
// 调用另外一个事务,try catch住
secondTransactionService.transaction2();
} catch (Exception e) {
e.printStackTrace();
}

// 插入当前用户tx1
User user = new User("tx1", "111", 18);
userService.insertUser(user);

}

定义一个controller,调用transaction1方法

@GetMapping("/testNestedTx")
public String testNestedTx() {
firstTransactionService.transaction1();
return "success";
}

大家觉得调用这个http接口,最终数据库插入的是几条数据呢?
问题结果

正确答案是数据库插入了0条数据。

标签:总结,transaction1,17,插入,user,transaction2,catch,User
From: https://www.cnblogs.com/lmyy/p/17342590.html

相关文章

  • 4月21日总结
    STM32下载ELF文件、可执行bin文件的最小size测试1、STM32能下载ELF格式的文件吗?答:可以。因为所谓的bin文件就是ELF文件的.text代码段。当然前提是下载工具能识别ELF文件格式,STM32下载ELF文件并不意味着STM32可以把ELFdownload到Flash上,而是下载工具能从ELF提取到bin文件,下载时......
  • 4月20日总结
    boot-admin整合flowable官方editor-app源码进行BPMN2-0建模(续)boot-admin整合flowable官方editor-app源码进行BPMN2-0建模(续)书接上回项目源码仓库github项目源码仓库giteeboot-admin是一款采用前后端分离模式、基于SpringCloud微服务架构的SaaS后台管理框架。系统内置基础管......
  • 4月19日总结
    「数据库、数据库连接池、数据源」这些概念你真的理解了吗?前言我学习的过程中,对于连接池和数据源分得不是很清楚,而且我发现有的人将数据库等同于数据源,或者将数据源等同于连接池,实际上这些说法并不准确。在某次工作中,同事A说道,这个数据源不行,那么换一个数据源就可以了,结果我......
  • 4月18日总结
    .Copy和CloneRust中的Copy和Clonetrait都允许创建类型实例的副本。它们都提供了一种复制类型实例的方法,但它们之间存在一些重要的区别。了解这些区别有助更好地使用这两个特征。2.CopytraitCopytrait允许按位复制类型的实例。这意味着当您将一个变量赋值给另一个变量时,如果该......
  • 每日总结
    今天课程多,没弄什么东西,简单搞了一个老师档案  ......
  • 双指针总结
    双指针总结快慢指针类似于龟兔赛跑,两个链表上的指针从同一节点出发,其中一个指针前进速度是另一个指针的两倍。利用快慢指针可以用来解决某些算法问题,比如计算链表的中点:快慢指针从头节点出发,每轮迭代中,快指针向前移动两个节点,慢指针向前移动一个节点,最终当快指针到达终点的时......
  • 4月21号总结
    因为JavaWeb中的图片扫描和表格识别是一个比较复杂的过程,需要借助第三方库,所以无法提供完整的代码。但可以提供一个基本的思路:1. 在前端页面中添加一个文件上传的input控件,让用户可以选择要上传的图片。2. 在JavaWeb后端中,通过使用第三方图像处理库(如OpenCV)对选中的图片进行处理......
  • 4.21每日总结
    昨天的成就:修复拍照获得图片模糊遇到什么困难:之前拍照获得的图片并没有存储到本地,而是直接在onActivityResult中返回一个bitmap缩略图,所以导致图片模糊,识别不出来有效信息,现在改成存储到本地,在识别时在调用路径就可以解决今天的任务:尝试支付宝截图的识别......
  • 每日练习总结
    昨天我学习了关于web调用其他公司接口进行排班的实际案例今天我从github上找到了一个关于日历算法实现智能排班的代码实例,并且进行了相关的研究遇到的问题:如果调用其他公司接口,我们需要付费使用,成本过高,不现实。在研究日历算法时发现他们用ts文件实现的日历算法,我们电脑的环境配......
  • 2023.4.21每日总结
    今天做了什么:今天完善了对于账单的录入,用于用户修改以及删除部分,之前在创建账单表时,忽略了账单应该绑定用户的问题,今天解决了这个问题。遇到了哪些困难:在各个jsp与Servlet之间传递用户名这个元素时遇到了困难,在使用request.setAttribute()这个方法与request.getAttribute()这两个......