当前位置: 首页 > news >正文

spring的事物管理的认知

事物

它是一个原子操作要么全部不执行,要么全部执行成功,如果有一个失败也会撤销,它保证用户每一次的操作都是可靠的,即使时出现了错误也不至于破坏数据的完整性

它包含了四种特性:

原子性:保证事物要么全部执行,要么全部不执行。

一致性:保证了数据的一致性。

持久性:事物的操作的数据会存储到数据库中是永久保存的。

隔离性:同样的事物操作相同的数据它们是相互隔离的。

实现事物的方式

编程式:

在你的idea里面创建好一个项目完成实体类包和mapper包以及service包等。

完成以上的前置工作后,在你的service包里面添加一个impl实现包也就是需要实现service里面的接口方法,mapper里面的方法也是接口类型的。

在service包下的impl也就是实现包里面写上实现类,在理导入TransactionTemplate,在将你的mapper注入进来,完成数据库的增删查改操作。(也可以使用PlatformTransactionManager事物管理器代替TransactionTemplate具体看个人,这里使用的是TransactionTemplate)。

定义一个新增方法:

它有两中事物的返回方式,一种是没有返回值,另一种是有一个返回值

没有返回值的:

那个参数status是事物的状态,可以通过它来得知事物的状态

设置事物并调用你导入的mapper进行添加操作完成事物,可以主动抛出异常查看事物的状态。

没有返回值的:

那个tx参数是代表事物的,在执行一个事物的操作,返回一个true也就是给我们事物的返回值,事物是不会对我们的返回值有影响,只有出现的异常才会有影响的。

声明式:

在你的方法上面添加一个注解@Transactional

propagation:事物传播性

rollbackFor:默认不回滚,需要自己配置

@Transactional注解里面表示它不仅仅可以添加到方法上面还可以添加到类上面,在类上面的时候是表示这个类里面的方法都执行相同的事物,但如果方法上面也有这个注解这安装方法上面的注解进行使用,一般不建议配置在类上

一些常用的参数:

value:设置bean的名称

transactionManager:与value意思一致

isolation:事物隔离状态

timeout:超时时间

readOnly:是否开启只读事物默认false

控制回滚的方式:

事物失效

这里显示我们事物抛出了异常但被catch了所以不会抛出,也不会回滚。

这个是表示我们抛出的异常但并不会回滚,因为SQLException继承与Exception,只有运行错误或者编译异常才会提示,需要在上面的注解里面添加rollbackFor。

如果方法修饰符使用了private的话也不可以使用,事物不可以直接获取非public的方法。

这种也不会生效因为这里发生的自身调用,只有在外部调用才会生效

http://www.lryc.cn/news/523721.html

相关文章:

  • 麒麟LINUX V10SP3 2401安装ORACLE 12.2.1 runInstaller直接报UNZIP格式不对
  • 华为HuaweiCloudStack(一)介绍与架构
  • 微服务学习:基础理论
  • C++实现设计模式---迭代器模式 (Iterator)
  • 海康工业相机的应用部署不是简简单单!?
  • Windows电脑安装File Browser与cpolar轻松搭建本地云盘
  • mac配置 iTerm2 使用lrzsz与服务器传输文件
  • 【HBuilderX 中 Git 的使用】
  • Golang结合MySQL和DuckDB提高查询性能
  • 学技术学英语:TCP的三次握手和四次挥手
  • xiao esp32 S3播放SD卡wav音频
  • Unity中实现伤害跳字效果(简单好抄)
  • GaussDB日常维护操作
  • redis实现限流
  • 基于SpringBoot和PostGIS的各国及所属机场信息检索及可视化实现
  • python http server运行Angular 单页面路由时重定向,解决404问题
  • GPT-4o背后的语音技术
  • 微透镜阵列精准全检,白光干涉3D自动量测方案提效70%
  • Spring boot框架下的RocketMQ消息中间件
  • 记录一次 centos 启动失败
  • C++学习第五天
  • openharmony标准系统方案之瑞芯微RK3568移植案例
  • 深入理解 SSH 端口转发:本地 vs 远程 vs 动态转发
  • postman请求参数化
  • 基于 WEB 开发的汽车养护系统设计与实现
  • Nginx正向代理配置
  • 本地仓库管理之当前分支内的操作
  • 《内网穿透:网络拓展与安全防护的平衡艺术》
  • 【python写个可以运行的2048小游戏】
  • 【Flink系列】9. Flink容错机制