1、事务的概念
- 事务就是一组独立不可分割的工作单元,事务中的操作要不全部执行,要不就全都不执行
- 最直观的一个事务实例,如下所示
- 当前有两张表,分别是账户表(account_table)和商品库存表(inventory_table)
- 如果现在要完成张三的下单业务,要扣减购买商品的100件库存,同时还要扣除张三的账户余额
- 我们编写代码的话,对这两张表进行操作,如果出现用户账户余额不足(即SQL执行失败),那我们就需要考虑是否还要扣减商品库存?这就是事务
- 我们在这一业务中要保证要不这两张表同时改变,要不就都不改变
2、Spring事务的实现方式和实现原理
2.1、Spring事务的实现原理
- Spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,Spring是无法提供事务功能的。
- 即会调用数据库设置手动事务
set autocommit=0
,之后通过commit
提交和rollback
回滚,数据库底层是通过binlog
或者redo log
实现的
2.2、Spring事务的实现方式
1)编程式
- 编程式(编程控制事务),
beginTransaction()、commit()、rollback()
等事务管理相关的方法
- 但是编程式会造成代码重复荣誉
2)声明式
- 可以利用Spring自带的
@Transaction
注解或者AOP配置
posted @
2022-08-02 13:53
OnlyOnYourself-Lzw
阅读(
34)
评论()
编辑
收藏
举报
点击右上角即可分享
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?