Spring的事务控制——学习历程

思考:


1. 事务是干什么的?

        2. 事务的特性?

        3. 事务控制的传播方式(传播行为)

        4. 事务的隔离级别

        5. 事务是如何实现的?

        6. 事务的回滚方式

        7.  事务失效场景

回答:

1. 事务和锁,还有版本控制 都是为了保证数据一致性的。

2. 事务都是围绕着ACID来的(分布式事务CAP),A是原子性,把整个事务看做为一个不可分的原子,必须都对,或者都错;C是一致性,事务执行前,数据库处于一致状态;执行后,即使发生故障,数据库仍须保持一致性(例如:转账前后总金额不变);I是隔离性,事务和事务之间相互隔离,互不干扰;D是持久性,他主要是针对数据库层面,一旦事务完成,他的CRUD就都保存在数据库里,被持久化了。

3. Spring 支持多种事务传播行为,例如:

  • PROPAGATION_REQUIRED:如果当前存在事务,则加入该事务;否则新建一个事务。
  • PROPAGATION_REQUIRES_NEW:无论当前是否存在事务,都新建事务,并挂起当前事务。
  • PROPAGATION_SUPPORTS:支持当前事务,不存在则以非事务方式执行。
  • PROPAGATION_MANDATORY:必须存在事务,否则抛出异常。
  • PROPAGATION_NEVER:不能存在事务,否则抛出异常。
  • PROPAGATION_NESTED:在嵌套事务中执行。

4. 事务的隔离级别相比MySQL数据库多了一个级别:默认( DEFAULT

  • DEFAULT:使用数据库默认的隔离级别。

        MySQL的隔离级别有:可序列化 > 可重复度(幻读) > 读已提交(脏读) > 读未提交

5. 是采用的AOP方法,@Transaction为标识,每次开启动态代理(Java的动态代理,JDK),在同一个线程内,多个 DAO 操作可以共享同一个数据库连接和事务。当事务提交或回滚后,这些资源会被释放。

6.回滚方式:(我记得好像可以调节隔离级别查看事务的回滚过程【之前尝试过,现在有点不清晰了】)

  • 默认情况下,Spring 只对运行时异常(RuntimeException 及其子类)和 Error 进行回滚。
  • 可以通过 rollbackFor 和 noRollbackFor 属性自定义哪些异常触发回滚。

7.(鞭策AI给的一份应面回答)

补充:

1.  JDK代理 和 CGLIB代理的区别 :前者靠反射, 后者考继承,前者主要针对接口类,后者针对非接口,非final的类

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/88534.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/88534.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙 Secure Boot 全流程解析:从 BootROM 到内核签名验证的实战指南

摘要 随着智能设备应用的深入,操作系统安全成为设备可信运行的基础。在物联网和多终端场景中,一旦系统被恶意篡改,将带来数据泄露、设备被控等严重后果。鸿蒙系统在安全启动方面设计了完整的机制,从最底层的 Boot ROM 开始逐级校验…

tailwindCSS === 使用插件自动类名排序

目录 类如何排序 自定义 实战应用 .prettierrc package .eslintrc 人们一直在讨论在 Tailwind 项目中对实用程序类进行排序的最佳方法。今天,我们很高兴地宣布,随着我们官方 prettier-plugin-tailwindcss 的发布,您终于可以不用为此担…

数据结构 —— 键值对 map

目录 map的若干操作 1、emplace() 2、find(key) 3、count(key) 4、lower_bound 和 upper_bound 5、erase() 6、empty() 7、降序的map 计蒜客T3603 叫号系统 题意: 解题思路: Code: Leetcode1309 解码字母到整数映射 题意: 解题…

C++ 性能优化指南

C 性能优化指南(针对 GCC 编译器,面向高级工程师面试) 代码优化面试常问点: 如何避免不必要的对象拷贝?为什么要用引用或 std::move?虚函数调用有什么性能开销?原理解释: 传递对象时…

拼数(字符串排序)

题目描述设有 n 个正整数 a1​…an​,将它们联接成一排,相邻数字首尾相接,组成一个最大的整数。输入格式第一行有一个整数,表示数字个数 n。第二行有 n 个整数,表示给出的 n 个整数 ai​。输出格式一个正整数&#xff…

【MySQL】函数学习-字符串函数

一、MySQL字符串函数基础回顾 在MySQL中,字符串函数用于处理文本数据,常见场景包括数据拼接、格式转换、清洗等。以下是核心函数速览:函数名作用说明基础示例(独立运行)CONCAT(s1,s2)拼接多个字符串SELECT CONCAT(heel…

AI不是“心智的蒸汽机“:重新理解人工智能的本质

当我们谈论人工智能时,最常听到的比喻是"心智的蒸汽机"——一个能够自动化认知任务的强大工具。但这个比喻可能从根本上误导了我们对AI真正潜力的理解。 最近,来自科罗拉多大学丹佛分校和肯尼索州立大学的研究团队发表了一篇论文[1]&#xff0…

免费的AI Logo工具生成的Logo质量怎么样?我对比了7个AI Logo生成器,设计必备

你尝试过用 AI 生成 Logo 吗?在 AI 巨火的今天,什么事情都可以尝试用 AI 去做。在品牌设计上也是如此,用 AI 做品牌设计、用 AI 做电商海报、用 AI 做包装设计等等。不知道你用过哪些 AI 工具,哪些是你觉得好用的。今天我们就来研…

计算机基础:内存模型

专栏导航 上一篇:WIndows 编程辅助技能:格式工厂的使用 回到目录 下一篇:MFC 第一章概述 本节前言 本来呢,没想着在单独的课节中讲解内存模型。但是呢,在我写过的一些个课节中,我发现,内存…

Sigma-Aldrich 细胞培养实验方案 | 通过Hoechst DNA染色检测细胞的支原体污染

目标DNA染色(如间接Hoechst染色技术)一种快速的方法,其可在72小时内获得结果,这相较于通过培养分离检测支原体所需的4周时间相比是更加有利的。用DNA染色剂对细胞系进行直接染色可在24小时内获得结果,但会大大降低灵敏…

需求跟踪深度解析:架构师视角下的全链路追溯体系

需求跟踪(Requirements Traceability)是确保软件系统从业务目标到代码实现全程可追溯的核心实践,尤其在安全关键系统(如航空、医疗)中具有强制性要求。一、需求跟踪的四大核心价值变更影响分析 精确评估需求变更波及范…

《棒球规则介绍》领队和主教练谁说了算·棒球1号位

Baseball 101|GM vs Manager 到底谁是球队话事人? ⚾️权力金字塔:谁说了算?General Manager(总经理/GM)球队建筑师:负责选秀(Draft)、交易球员(Trade&#x…

电力自动化的通信中枢,为何工业交换机越来越重要?

在“新能源数字化”双轮驱动下,电力行业正经历深刻变革,传统变电站也迎来了向智能化、自动化加速转型的时代。作为连接站内各级系统与装置的数据“中枢”,工业以太网交换机已成为现代变电站自动化系统中不可或缺的核心设备。在这场深度重构的…

【Linux仓库】命令行参数与环境变量【进程·伍】

🌟 各位看官好,我是egoist2023! 🌍 Linux Linux is not Unix ! 🚀 今天来学习命令行参数与环境变量的相关知识。 👍 如果觉得这篇文章有帮助,欢迎您一键三连,分享给更多…

R 数据框:深入解析及其在数据分析中的应用

R 数据框:深入解析及其在数据分析中的应用 引言 R语言作为一种强大的统计计算和图形工具,在数据分析领域有着广泛的应用。数据框(DataFrame)是R语言中处理数据的一种重要结构,它类似于其他编程语言中的表格或关系数据库中的表。本文将深入解析R数据框的概念、特点、创建…

机器学习数据集划分全指南:train_test_split详解与实践

目录 一、为什么需要划分数据集? 二、train_test_split基础用法 2.1 最简单的划分方式 2.2 参数说明 三、实际应用案例:Iris数据集划分 四、高级技巧与注意事项 4.1 分层抽样(Stratified Sampling) 4.2 时间序列数据划分 …

python-77-数据序列化框架Avro数据格式编码和解析

文章目录 1 avro简介1.1 关键特点1.2 无需标记2 使用步骤2.1 定义Avro模式2.2 编码Avro数据2.3 解析Avro数据3 DataFileWriter和DataFileReader3.1 写入DataFileWriter3.2 读取DataFileReader3 文件中存储16进制字符串3.1 十六进制字符串3.2 代码示例4 接收kafka中的avro数据5 …

IAR携手矽力杰与普华基础软件,共推RISC-V车规芯片高安全应用落地

芯片 基础软件 开发工具三方协同,赋能国产汽车电子加速自主演进 在“软件定义汽车”持续重塑产业格局的当下,构建安全、高效、可扩展的本土汽车电子生态已成为行业共识。 IAR嵌入式开发解决方案现已全面支持矽力杰SA32B系列和即将量产的SA32D系列车规…

Vscode——报错,加载 Web 视图时出错: Error: Could not register service worker

Vscode——报错完整信息 加载 Web 视图时出错: Error: Could not register service worker: InvalidStateError: Failed to register a ServiceWorker: The document is in an invalid state… 很有意思下班前还是好的,上班发现下载的Ai code 无法正常使用了 解决…

Java-Collections、Map

目录 1.可变参数 2.Collections工具类 不同集合类型的排序方法比较 3.斗地主游戏 4.Map集合 4.1 Map集合概述 4.2 Map集合的常用方法 4.3 Map集合的遍历方式 4.4 Map集合案例—统计投票人数 4.5 HashMap 4.6 LinkedHashMap 4.7 TreeMap 5.集合的嵌套 1.可变参数 import …