| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> 一周时间深扒事务 总结代码演示篇 拿捏事务 -> 正文阅读 |
|
[大数据]一周时间深扒事务 总结代码演示篇 拿捏事务 |
前言首先 作为一个开发 我们首先就是要保证数据的安全性和准确性 减少数据偏差 因为一点的数据偏差也可能造成 很大的事故 所以了解事务的正确使用是必备的 我们可能都知道什么是事务 事务的理论 文章内容简介事务(理论) ????????
什么是事务????????事务具有四个特性: 一致性(Consistency) 隔离性(Isolation) 持续性(Durability) 这四个特性也简称ACID。 一个事务(transaction)中的所有操作,要么 就像你买东西要么交钱收货一起都执行,要么要是发不出货,就退钱。(最小了,不可再分了)
事务的一致性指的是在一个事务
指的是在并发环境中,
事务是怎么实现的(理论) ??????????
事务和AOP的关系我们都知道AOP 的一个功能 就是事务所以AOP 和 Transaction 之间的关系是很密切的 说白了就是 事务就是由AOP 动态代理去处理的 也影响着事务是否生效 下面通过源码可以看出两者之间的关系 代码解读 ??????????简单使用事务
开始测试1. 执行出现异常是否回滚加上事务 🤔: 执行结果如果这个时候不生效 的话 这个事务注解也没什么作用了 所以 事务是生效的 数据库无数据 2. 下面情况事务会不会生效我们在Insert 之后手动抛出错误 这个时候 那么事务会不会回滚呢? 心中想一下答案
🤨:看一下控制台
🤔: 查看数据库这个时候数据出现数据 为什么出现错误事务没有回滚呢 只要原因是 3. 下面事物会不会生效同样是自自定义抛出错误 加上红框框里的内容事物会不会回滚 数据库阶段总结
详细解析Case 1: 类内部访问1. 调用方不进行事物控制 被调用方进行事物控制这个时候我们抛出自定义 事务是否会回滚 控制台数据库
源码解析解释图
源码:
详细解读篇幅过长 请跳转另一个博客查看 :链接: 深扒事务内部类调用失效 小总结
Case2: Private 事务失效首先这个会出现编译提示 简单解读:我们简单看一下代码 上面如果你认真看了 就知道事务是否生效是和AOP 动态代理有关联的 当没有进行AOP 动态代理的增强事务就不会生效了 如图一所示 AOP 只会代理 小总结这个其实就是AOP的特性 :只需要记住一点 Case3 : 异常不匹配这种有两种情况 第一种情况看完上面应该知道 事务默认只能对运行时异常进行回滚 所以在使用 @Transactional 时没有增加 rollbackFor = Exception.class 导致出现异常 无法事务没有进行监听 点进rollbackOn 方法 发现 第二种情况异常捕获了。事务感知不到 所以在使用Try - catch 的时候注意 小总结
Case 4: 多线程事务失效代码演示
小总结由于子线程的异常不会被外部的线程捕获,所以父线程不抛异常,事务回滚没有生效。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/16 0:01:17- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |