mysql丢失一条事务_SpringBoot之MySQL数据的丢失的元凶--事务(转)
因为当时是跑定时任务去插入数据,大概是这样的
//简单的定时任务,30分钟执行一次
@Scheduled(cron = "0 0/30 * * * ?")
public void dealInsertUserInfo(){
userService.dealInsertUserInfo();
}
事后也没太注意它是否插入数据正常,直到第二天,有同事提出问题然后才发现表id自增到2000多了,数据一条都没有,尴尬!!!其实一般使用SpringBoot开发的都知道我们比较喜欢使用注解,一般会在service层加一个事务注解:@Transactional,毕竟可以根据不同的事务的隔离级别实现不同的功能,例如防止脏读、不可重复读以及幻读。但是事务失败则通过调用rollback()方法进行回滚,然后我的数据呢,就被它无情的吞掉了,然后我就shanlita
事务回滚必要条件
1.方法拦截——方法或者方法所在类被@Transactional注解
2.
异常——该方法的执行过程出现异常,事务管理器被触发,并对此做出处理
3.
指定异常——默认配置下,事务只会对Error与RuntimeException及其子类这些UNChecked异常,做出回滚。 一般的Exception这些Checked异常不会发生回滚(如果一般Exception想回滚要做出配置)
举个栗子:实现一般异常的回滚:
注解式:@Transactional(rollbackFor=Exception.class)
4.异常抛出——方法中出现的指定异常,只有在被事务管理器捕捉到以后,事务才会据此进行事务回滚,比如:
a.异常不捕捉,就会回滚
b.如果异常被try{}捕捉到,那么事务管理器就无法再捕捉异常,所以就无法做出反应,事务不回滚;(既catch(RuntimeException))
c.如果异常被try{}捕捉了,我们还可以在Catch(){}中throw new RuntimeException(),手动抛出运行时异常供事务管理器捕捉;(既catch(){ throw new RuntimeException(); })
d.手动回滚事务TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
关闭自动事物回滚,使用@Rollback(false)关闭回滚。
————————————————
版权声明:本文为CSDN博主「ZBYTSL」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ZBYTSL/article/details/102833922
mysql丢失一条事务_SpringBoot之MySQL数据的丢失的元凶--事务(转)相关推荐
- 【MySQL】一条查询语句在MySQL内部的执行过程
我们几乎每天都在写SQL语句,当我们写了一条查询语句,会得到一个查询结果,但是它在MySQL内部是怎样的一个执行过程呢? mysql> select * from T where Id = 10 ...
- mysql取n条不重复_MySQL重复数据中限定操作n条
对于一个表,有时可能里面有很多重复的条,比如: +-----------+---------+ | coupon_id | user_id | +-----------+---------+ | 8 ...
- mysql select from user_select user,host from mysql.user; 这条查询语句到达mysql 从开始到结束到底经历了什么...
mysqld 程序运行原理 mysqld 程序结构 连接层:执行上调语句 首先要连接到数据库 连接层 1.提供链接协议(连接的方法) socket(方法1 本地连接) TCP/IP(方法2 远程连接) ...
- MySQL查询结果条数编号示例 mysql 查找结果中自动加序号列
SELECT @row := @row + 1 as row, t.id FROM sgcorp_product t, (SELECT @row := 0) r where t.id not in(s ...
- 《MySQL技术》学习笔记——使用SQL管理数据
MySQL技术内幕--使用SQL管理数据 使用SQL管理数据 服务器的SQL模式 MySQL的标识符语法和命名规则 SQL语句的大小写规则 字符集支持 指定字符集 确定可用字符集和当前设置 Unico ...
- springboot事务回滚源码_Spring Boot中的事务是如何实现的
1. 概述 一直在用SpringBoot中的@Transactional来做事务管理,但是很少想过SpringBoot是如何实现事务管理的,今天从源码入手,看看@Transactional是如何实现事 ...
- 事务没提交的数据查的出来吗?_“金三银四”面试官:说说事务的ACID,什么是脏读、幻读?...
一.事务 事务是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成.--摘自百科 在MySQL里,事务是在引擎层面实现,比如MyIsam不支持,InnoDB支持 面试清单(Java ...
- 缓解数据包丢失对WAN的影响是当务之急—Vecloud微云
网络数据包是网络层的协议数据单元(PDU).我们所有人都有这样一个概念:通过像Internet这样的TCP / IP网络传输数据,需要将数据分解成包含相关应用程序数据和标头的小数据包(通常小于1500 ...
- springboot mysql 事务_springBoot(14):使用SQL关系型数据库-事务处理
一.事务的四个特性(ACID) 原子性(Atomicity): 事务是一个原子操作,由一系列动作组成.事务的原子性确保动作要么全部完成,要么完全不起作用. 一致性(Consistency): 一旦事务 ...
最新文章
- 除法取模(比赛常用)
- 构建根文件系统启动(1)
- OpenGL实践系列之开篇: 坐标系
- php中单引号与双引号的区别
- 哲学家就餐问题linux源代码,Linux下实现哲学家就餐问题
- 怎样把本软件是否注册的标志加在程序里?(注:不想加在数据库里)
- mysql linux 客户端_MySQL—Linux查看客户端连接信息(连接数、进程等)
- [转帖]Linux修改时区
- ICLR'22 | 图机器学习最近都在研究什么?
- 用imspost制作catia后处理_为什么我推荐你用3D打印技术制造模具?
- centos7.4下的KVM虚拟机安装使用
- Kconfig使用介绍
- django mysql内存泄漏_Django ORM性能优化,数据存取优化
- NRF24L01-状态寄存器
- 【经验总结】小白挖洞十天经验分享
- 【​观察】 娃娃也能编程?微软“编程一小时”让你家娃也能变身编程达人
- html制作多媒体课件,多媒体课件设计与制作 教师课件制作平台
- 学计算机要选什么科,计算机要学什么科目
- Java 程序基本结构
- Henry捡钱 Java 动态规划
热门文章
- SQL Server Integration Services(SSIS)中的脚本任务调试
- 想入职阿里的Java开发者必看,阿里巴巴面试官实战经验分享!
- 学习NSURLSession(1)
- property内存管理策略
- Windows Server 2008 R2 主域控制器委派DNS到子域控控制器
- 总结开发Silverlight项目准则 [转]
- sqlCommang ADO.Net
- Android 自定义控件之圆形扩散View(DiffuseView)
- 团队作业8----第二次项目冲刺(beta阶段)5.20
- [BZOJ]2194: 快速傅立叶之二