Spring的AOP思想中事物管理注意点

server/2025/2/4 19:29:40/

我们以事务管理实现AOP思想
      通过在Service层加入事务管理,因为Service层可能使用多个DAO(多条SQL语句)
      要保证这些SQL要么同时成功,要么同时失败,例如:学生Serivce:删除学生的时候,还需要删除学生关联信息(选课信息)
      只有都删除成功才提交,如果有一条执行失败就要回滚,因此我们需要依靠事务管理实现

 

 同时失败时:抛运行时异常,直接终止掉

                 throw new RuntimeException(throwables.getMessage());

java">    @Overridepublic void saveProduct(Product product) {try {queryRunner.update(connectionFactory.currentThreadConn(),"INSERT INTO spring.product(pname, price, category) VALUE (?,?,?)," +product.getPname(),product.getPrice(),product.getCategory())} catch (SQLException throwables) {throw new RuntimeException(throwables.getMessage());}}

 


http://www.ppmy.cn/server/164962.html

相关文章

Rust 的基本类型有哪些,他们存在堆上还是栈上,是否可以COPY?

Rust 的基本类型主要包括以下几类: 1. 整数类型(Integer) Rust 提供了有符号和无符号的整数类型: 有符号整数(i8, i16, i32, i64, i128, isize)无符号整数(u8, u16, u32, u64, u128, usize&a…

EtherCAT主站IGH-- 29 -- IGH之mailbox.h/c文件解析

EtherCAT主站IGH-- 29 -- IGH之mailbox.h/c文件解析 0 预览一 该文件功能`mailbox.c` 文件功能函数预览二 函数功能介绍`mailbox.c` 中主要函数的作用1. `ec_slave_mbox_prepare_send`2. `ec_slave_mbox_prepare_check`3. `ec_slave_mbox_check`4. `ec_slave_mbox_prepare_fetc…

Kotlin 使用 Springboot 反射执行方法并自动传参

在使用反射的时候,执行方法的时候在想如果Springboot 能对需要执行的反射方法的参数自动注入就好了。所以就有了下文。 知识点 获取上下文通过上下文获取 Bean通过上下文创建一个对象,该对象所需的参数由 Springboot 自己注入 创建参数 因为需要对反…

Java 大视界 -- Java 大数据在量子通信安全中的应用探索(69)

💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…

Spark Streaming的背压机制的原理与实现代码及分析

Spark Streaming的背压机制是一种根据JobScheduler反馈的作业执行信息来动态调整Receiver数据接收率的机制。 在Spark 1.5.0及以上版本中,可以通过设置spark.streaming.backpressure.enabled为true来启用背压机制。当启用背压机制时,Spark Streaming会自…

CSS Module 常用笔记

Date: January 30, 2025 CSS 先介绍下普通 CSS,再简明介绍下 css module 的使用 普通 CSS 内联 style 定义: 内联 style 是通过在元素的 style 属性中直接设置 CSS 样式。这种方式允许我们直接在 JSX 中为组件或元素添加样式。 写法: &…

二叉树——102,107,199,637

前中后序遍历是二叉树的深度遍历,而层序遍历则是二叉树的广度遍历。顾名思义,二叉树的层序遍历就是一层一层遍历二叉树的每一个节点。今天的几道题都是关于二叉树的层序遍历的,大体思路都非常相似,都是在层序遍历的基础上实现了有…

搜索与图论复习1

1深度优先遍历DFS 2宽度优先遍历BFS 3树与图的存储 4树与图的深度优先遍历 5树与图的宽度优先遍历 6拓扑排序 1DFS&#xff1a; #include<bits/stdc.h> using namespace std; const int N10; int n; int path[N]; bool st[N]; void dfs(int u){if(nu){for(int i0;…