Spring学习(五)
创始人
2025-05-30 21:51:32

事物管理:

一、事物管理的回顾:

1、事物的概念:

  • 事物:逻辑上的一组操作,组成这组操作的各个单元,要么全都成功,要么全都失败。

2、事物的特性:

  • 原子性:事物不可分割。
  • 一致性:事物执行前后,数据完整性保持一致。
  • 隔离性:一个事务执行不应该收到其他事务的干扰。
  • 持久性:一旦事务结束,数据就持久化到数据库。

在这里插入图片描述

二、Spring事务管理的API:
在这里插入图片描述
在这里插入图片描述

三、事务的传播行为:

为了解决特别复杂的业务,业务层之间的方法相互调用的问题。涉及到你这里有事务,我这里也有事务,怎么传播。
在这里插入图片描述
在这里插入图片描述

四、Spring的事务管理:

1、搭建Spring 事务管理的环境:

  • 搭建service的接口和实现类:
    在这里插入图片描述

  • 创建DAO的接口和实现类:
    在这里插入图片描述

  • 配置service和DAO,交给Spring去管理:
    在这里插入图片描述

  • 在DAO中编写扣钱和价钱的方法:

  • 1)配置连接池和JDBC模板:
    在这里插入图片描述
  • 2)在DAO中注入JDBC模板:
    在这里插入图片描述
    2、测试:
    在这里插入图片描述
    在这里插入图片描述
    业务层加一个异常:
    在这里插入图片描述
    一个转了钱,一个没收到。
    在这里插入图片描述

五、Spring的事务管理:一类:编程式事务(需要手动编写代码)(了解)

1、配置平台事务管理器:
在这里插入图片描述
2、Spring提供了事务管理的模板类:
1)配置事务管理的模板类:

在这里插入图片描述
3、在业务层注入事务管理的模板:
在这里插入图片描述
在这里插入图片描述
4、编写事务管理的代码:
在这里插入图片描述
5、测试:

无异常时:转账成功
在这里插入图片描述
在这里插入图片描述

有异常时:
在这里插入图片描述
不会数据丢失,也不会转账成功。说明事务已添加
在这里插入图片描述

六、Spring事务管理:二类:声明式事务管理(通过配置实现)-------AOP //底层就是AOP

1、XML方式的声明式事务管理(优点:配完以后,业务层就不用管了,所有业务层的类,所有业务层的方法都会执行这个事务)

  • 第一步:引入AOP的开发包:

  • 第二步:恢复转账环境

  • 第三步:配置事务管理器
    在这里插入图片描述

  • 第四步:配置增强:
    在这里插入图片描述

  • 第五步:AOP的配置:
    在这里插入图片描述

  • 第六步:测试:
    没有异常时:转账成功。
    有异常时:不转账,数额不变。

2、注解方式的声明式事务管理(优点:配置比较方便,但是每次写业务层的时候,要记得加注解@Transactional)

  • 第一步:引入AOP的开发包:
  • 第二步:恢复转账环境:
  • 第三步:配置事务管理器:不管是哪种,事务管理器都得配

在这里插入图片描述

  • 第四步:开启注解事务:

在这里插入图片描述

  • 第五步:在业务层上添加事务管理的注解:

在这里插入图片描述

  • 第六步:测试

没异常:转账成功。
有异常:不转账。

注:两种方式都得会

相关内容

热门资讯

基于深度学习的车型识别系统(P... 摘要:基于深度学习的车型识别系统用于识别不同类型的车辆,应用YOLO V...
[C语言]错误信息报告stre... strerrorchar* strerror(int errnum);//返回错误码,...
配置管理的四个要点 配置管理是基础,是关键。做工具平台或系统,一定要重视基础的建设。一定要做...
机构密集调研!长三角区域银行为... 地方性上市银行大获青睐。 5月29日,《国际金融报》记者梳理Wind数据发现,已有超千家机构对24家...
Android文件目录 前言 Android文件目录可以分为内部存储和外部存储,其中外部存储又可以分为私有目录...
用友NC数据库迁移服务解决方案 NC数据库迁移工具操作说明          NC数据库迁移工具的功能:不同数据库之间...
Harbor仓库开启SSL 目录一、部署docker二、安装docker-compose三、安装harbor下载离线安装包&#x...
HTML、CSS学习笔记7(媒... 目录 一、媒体查询 1.max-min-width 2.书写顺序  3.媒体类型 4.媒体查询——l...
Word加载项/插件管理 Word加载项/插件管理前言准备:开启加载项功能区加载项Word加载项COM加载项 前...
Spring产生数据源对象(c... 目录一、c3p01. 添加依赖2. 在resources中创建applicationContext....
ArcScene制作三维地图-... ArcScene制作三维地图-三维模型发布时间:2018-01-17 版权࿱...
【C++】面试101,用两个栈... 目录 1. 用两个栈实现队列  2.包含min函数的栈 3.有效括号序列  4.滑动窗口的最大值 5...
一文说明白,TypeScrip... ● 通过前两章的学习, 我们基本上对于 TS 已经入门了 ● 但是我们会发现, 我们好像对于类型限制...
《JavaEE初阶》计算机网络... 《JavaEE初阶》计算机网络之网络原理(传输层) 前言: 本章主要将介绍传输层的UDP与TCP协议...
菲林格尔筹划控制权变更事项 6... 菲林格尔(603226)筹划易主。 5月30日晚间菲林格尔公告,公司于5月30日收到公司实际控制人丁...
[实战]上传文件的实战问题 [实战]上传文件的实战问题文件上传前的编辑问题上传文件的时机选择=>编辑=>上传 文...
学习笔记:基于SpringBo... 一、发送邮件 发送邮件主要使用JavaMailSender类,使用send方法&#x...
ENet学习笔记 ENet:A deep Neural Network Architecture for Real-T...
Obsidian插件推荐和页面... 1. 插件推荐 custom attachment location 可自定义附件图片的存放位置&#...
7个Python中的隐藏小技巧... Python 是每个程序员都喜欢的语言,因为它易于编码和易于阅读的语法。但是ÿ...
Kotlin实现Service... Service的使用1异步通信方式2Service的启动和停止3希望Activity和Service...
python绘制三维图 一、初始化 假设已经安装了matplotlib工具包。 利用matplotlib.figure.Fi...
每周股票复盘:恺英网络(002... 截至2025年5月30日收盘,恺英网络(002517)报收于15.93元,较上周的15.77元上涨1...
HashTabld底层源码解读 Java源码系列:下方连接 http://t.csdn.cn/Nwzed 文章目录...
常熟银行新注册《常熟农商银行P... 证券之星消息,近日常熟银行(601128)新注册了《常熟农商银行PDF转Word系统V1.0.0.0...
血洗币圈!比特币崩盘,跌至8万... 端午安康,祝大家在牛市中稳健操作,迈向财富自由!别忘了点赞关注,咱们一起把握市场机会! 比特币最近...
k8s部署prometheus k8s部署prometheus 版本说明: k8s:1.24.4 pro...
OpenAI似乎步子迈太大了 ... 出品|虎嗅科技组作者|孙晓晨编辑|苗正卿头图|视觉中国当地时间5月29日,据外媒报道,特拉华州总检察...
代码随想录-58-654.最大... 目录前言题目1.构造二叉树-递归(区间,左闭右开)2. 本...
Git Actions自动发布... Git Actions自动发布部署,非最完善但足够完善和上手的一篇 文章最后附带完整...