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

Spring框架学习day6--事务管理

Spring事务管理

Spring事务管理是在AOP的基础上,当我们的方法完全执行成功后,再提交事务,如果方法中有异常,就不提交事务

Spring中的事务管理有两种方式:

​ 1.编程式事务

​ 需要我们在业务代码中手动提交

​ 2.声明式事务

​ 分为:基于 xml 配置 基于注解实现

Spring 的 dao 框架,提供事物管理实现类是 DataSourceTransactionManager

配置事务管理器

<!-- 配置 spring 事务管理器-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"></property>
</bean>

注解方式

<!-- 开启注解事务管理 -->
<tx:annotation-driven transaction-manager="transactionManager"/>

在类或方法上使用@Transactional 标签即可.

Transactional 可以添加在类上,这样类中所有的方法都在事务管理中运行

​ 也可以方法上,只有所添加方法的事务管理中运行

主要作用:如果对应事务发生异常,会终止提交事务

声明式事务不生效的场景

  • @Transactional 应用在
  • 非 public 修饰的方法上
  • 异常被 catch 捕获导致失效
  • 出现编译期异常
  • 数据库引擎不支持事务
@Transactional(rollbackFor = Exception.class)// 事务注解 rollbackFor 指定出现异常时回滚

事务日志
在这里插入图片描述

http://www.lqws.cn/news/67933.html

相关文章:

  • 《人性的弱点》能带给我们什么?
  • IoTGateway项目生成Api并通过swagger和Postman调用
  • [免费]微信小程序网上花店系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】
  • 提升嵌入式软件调试效率的核心方
  • 内存管理--《Hello C++ Wrold!》(8)--(C/C++)--深入剖析new和delete的使用和底层实现
  • 【Linux】网络--网络层--IP协议
  • PyTorch——卷积层(3)
  • CppCon 2014 学习:0xBADC0DE
  • CSS之动画(奔跑的熊、两面反转盒子、3D导航栏、旋转木马)
  • 小目标检测:YOLOV7改进之双坐标注意力(DCA)
  • TDengine 高级功能——读缓存
  • 汽车安全体系:FuSa、SOTIF、Cybersecurity 从理论到实战
  • 机器人自动火焰切割H型钢的系统设计与应用
  • 机器人夹爪的选型与ROS通讯——机器人抓取系统基础系列(六)
  • 【Redis】Set 集合
  • 【基于阿里云搭建数据仓库(离线)】IDEA导出Jar包(包括第三方依赖)
  • 微型导轨在手术机器人领域中有哪些关键操作?
  • 【Linux】线程控制
  • java 多线程
  • dvwa4——File Inclusion
  • Spring Boot 3.X 下Redis缓存的尝试(二):自动注解实现自动化缓存操作
  • [特殊字符] Python开发革命!uv工具:让环境管理像点外卖一样简单
  • 振动分析师(ISO18436-2)四级能力矩阵 - 简介
  • Arbitrum Stylus 合约实战 :Rust 实现 ERC721
  • 01 Ubuntu20.04下编译QEMU8.2.4,交叉编译32位ARM程序,运行ARM程序的方法
  • JavaWeb预习(jsp)
  • 图论刷题1
  • 29 C 语言内存管理与多文件编程详解:栈区、全局静态区、static 与 extern 深度解析
  • Netty学习example示例
  • webfuture:如何屏蔽后台发文界面的保存为新文章按钮?