前言
通过上文我们实现了图书借阅审核列表,本文实战的场景是:审核图书借阅!因为审核后最终会执行2条更新SQL,所以就派上了事务。
事务是用来干什么的?事务是用来解决什么问题的? 什么情况下用到事务?
对于SpringBoot,我们主要使用的是声明式事务@Transactional,不仅有实战的用法,我还会用白话讲解事务的执行流程、ACID四大特性、MySQL四种隔离级别,以及 @Transactional不生效场景 坑点 (也适用于其它AOP注解)!
掌握这些应对大部分项目绰绰有余,面对一般面试也会尽在掌握中,OK,话不多说,嗨一波,Let’s Go!

文章目录
一、事务是用来干什么的?事务是用来解决什么问题的?
- 事务是用来干什么的?干嘛的?
- 事务是用来解决什么问题的?
- 事务是用来保证什么的?
- 事务一般用在什么地方?
- 什么情况下用到事务?
如果你有上面这些疑问,我想通过本文的审核场景 来回答你的疑问!
为了方便你理解需求,我画了一个流程图,如下:

审核通过或驳回后主要干两件事:
-
修改 图书借阅表
book_borrowing的状态status字段(1-通过,2-驳回) -
审核通过:修改 图书表
book的借阅数量borrow_count+1驳回:修改 图书表
book的status字段(0-空闲)
那么这时问题就来了,不管是通过还是驳回,一个方法内都需要更新2条SQL,那么这时如果出现一个sql成功,一个sql失败,数据不就不一致了吗?
那怎么保证2个SQL要么全成功,要么全失败,保证数据的一致性呢?
那么在这种情况下就需要SQL事务
本文介绍了SpringBoot中@Transactional事务注解在管理员图书借阅审核场景下的实战应用,详细讲解了事务的作用、执行流程、ACID特性、隔离级别,并探讨了@Transactional注解不生效的常见问题。通过实例代码展示了如何在service层和dal层实现事务控制,确保数据一致性。
订阅专栏 解锁全文





