| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> Spring声明式事务介绍 -> 正文阅读 |
|
[Java知识库]Spring声明式事务介绍 |
目录 ?创建 service,搭建 dao,完成对象创建和注入关系 service 注入 dao,在 dao 注入 JdbcTemplate,在 JdbcTemplate 注入 DataSource 在 dao 创建两个方法:多钱和少钱的方法,在 service 创建方法(转账的方法) 上面代码,如果正常执行是没有问题的,但是如果代码执行过程中出现异常,有问题 3、在 service 类上面(或者 service 类里面方法上面)添加事务注解 什么是事务定义事务是数据库操作最基本单元,逻辑上一组操作,要么都成功,如果有一个失败所有操 作都失败。 举例银行转账 *? tom转账 100 元 给 jerry。 * tom?少 100,jerry?多 100。 事务四个特性(ACID)(1)原子性 (2)一致性 (3)隔离性 (4)持久性 关于事务的特性我们曾经在mysql的学习中介绍过,有不明白的小伙伴可以回顾一下我曾经写的这篇文章《数据库事务介绍(一)数据库事务的基本概念》。 搭建事务操作环境
创建数据库表并添加数据
?创建 service,搭建 dao,完成对象创建和注入关系service 注入 dao,在 dao 注入 JdbcTemplate,在 JdbcTemplate 注入 DataSource这些操作,我们在上篇文章将如何使用JdbcTemplate的时候已经讲过了,这里不再赘述,而且我们用到的dao以及Service也还是上篇文章讲到的Service。如果有不明白的小伙伴可以去看上篇文章,而且我们这里用到的数据库表也是上篇文章的数据库表,这里只是增加了一个数据库字段money. 在 dao 创建两个方法:多钱和少钱的方法,在 service 创建方法(转账的方法)
上面代码,如果正常执行是没有问题的,但是如果代码执行过程中出现异常,有问题? ?在测试类中调用转账方法
此时我么发现tom钱少了,但是Jerry没多
上面问题如何解决呢??使用事务进行解决事务操作过程
Spring 事务管理介绍1、事务添加到 JavaEE 三层结构里面 Service 层(业务逻辑层) 2、在 Spring 进行事务管理操作 编程式事务管理和声明式事务管理(使用) 3、声明式事务管理 (1)基于注解方式(使用) (2)基于 xml 配置文件方式 4、在 Spring 进行声明式事务管理,底层使用 AOP 原理 5、Spring 事务管理 API 提供一个接口,代表事务管理器,这个接口针对不同的框架提供不同的实现类
?注解声明式事务管理1、在 spring 配置文件配置事务管理器
2.在 spring 配置文件,开启事务注解在 spring 配置文件引入名称空间 tx
开启事务注解 ?
3、在 service 类上面(或者 service 类里面方法上面)添加事务注解(1)@Transactional,这个注解添加到类上面,也可以添加方法上面 (2)如果把这个注解添加类上面,这个类里面所有的方法都添加事务 (3)如果把这个注解添加方法上面,为这个方法添加事务
?4.将两人的钱都修改为1000,再执行测试方法我们看到,异常还是会抛出但是由于我们使用了事务,我们的数据库是
注解声明式事务管理参数配置
?propagation:事务传播行为
?ioslation:事务隔离级别 ,我们之前在mysql的学习中介绍过事务的隔离级别,有兴趣的小伙伴可以去看一下这篇文章《数据库事务介绍(四)SQL中的四种隔离级别及其解决的并发问题》以及《数据库事务介绍(三)数据并发会产生的问题》 timeout:超时时间 (1)事务需要在一定时间内进行提交,如果不提交进行回滚 (2)默认值是 -1 ,设置时间以秒单位进行计算 readOnly:是否只读 (1)读:查询操作,写:添加修改删除操作 (2)readOnly 默认值 false,表示可以查询,可以添加修改删除操作 (3)设置 readOnly 值是 true,设置成 true 之后,只能查询 rollbackFor:回滚 设置出现哪些异常进行事务回滚 noRollbackFor:不回滚 设置出现哪些异常不进行事务回滚 XML 声明式事务管理在 spring 配置文件中进行配置第一步 配置事务管理器这个之前已经配置过 第二步 配置通知
第三步 配置切入点和切面
此时我们的去掉Service方法上的注解再执行测试方法
依然出现异常
但是数据库表
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 2:03:01- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |