IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: 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的声明式事务

什么是事务?

把一组业务当成一个业务来做;要么都成功,要么都失败,保证业务操作完整性的一种数据库机制。

Spring JdbcTemplate配置并测试数据源

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
连接数据库的配置文件

在这里插入图片描述
xml配置
在这里插入图片描述
注意:spring容器提供了一个JdbcTemplate类,用来方便操作数据库。
可以在xml配置文件里面加上,将其注册为bean组件

使用JdbcTemplate对数据库进行基本的增删改查

测试DruidDatasource有没有连接上
在这里插入图片描述
增删改查
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

声明式事务

ACID 四大特性
A 原子性:原子性指的是 在一组业务操作下 要么都成功 要么都失败
在一组增删改查的业务下 要么都提交 要么都回滚
C 一致性:事务前后的数据要保证数据的一致性
在一组的查询业务下 必须要保证前后关联数据的一致性
I 隔离性:在并发情况下 事物之间要相互隔离。
D 持久性:数据一旦保存就是持久性的
声明式事务:在方法的外部添加注解或者直接在配置文件中定义,将事务管理代码从业务方法中分离出来,以声明的方式来实现事务管理。spring的AOP恰好可以完成此功能:事务管理代码的固定模式作为一种横切关注点,通过AOP方法模块化,进而实现声明式事务。

注意:

@Transactional注解应该写在哪:
@Transactional 可以标记在类上面(当前类所有的方法都运用上了事务)
@Transactional 标记在方法则只是当前方法运用事务
也可以类和方法上面同时都存在, 如果类和方法都存在@Transactional会以方法的为准。
如果方法上面没有@Transactional会以类上面的为准
建议:@Transactional写在方法上面,控制粒度更细, 建议@Transactional写在业务逻辑层上,因为只有业务逻辑层才会有嵌套调用的情况

设置隔离级别(isolation)

用来解决并发事务所产生一些问题:
并发: 同一个时间,多个线程同时进行请求。
什么时候会生成并发问题:在并发情况下,对同一个数据(变量、对象)进行读写操作才会产生并发问题
并发会产生什么问题?
1.脏读
2.不可重复度
3.幻影读
解决方法:
一 脏读

  1. 一个事务,读取了另一个事务中没有提交的数据,会在本事务中产生的数据不一致的问题
    解决方式:@Transactional(isolation = Isolation.READ_COMMITTED)
    二 不可重复读
    2.一个事务中,多次读取相同的数据, 但是读取的结果不一样, 会在本事务中产生数据不一致的问题。
    解决方式:@Transactional(isolation = Isolation.REPEATABLE_READ)
    三 幻读
    一个事务中,多次对数据进行整表数据读取(统计),但是结果不一样, 会在本事务中产生数据不一致的问题。
    解决方式:@Transactional(isolation = Isolation.SERIALIZABLE)
    很多人容易搞混不可重复读和幻读,确实这两者有些相似:
    对于前者, 只需要锁行
    对于后者, 需要锁表

spring事务的传播行为:

注意:一般最经常使用的就是这三个

这些了解一下即可

超时属性(timeout)

设置超时属性为2秒,此线程停留了三秒,已经超时,故会报TransactionTimedOutException
注意:一般基于注解来实现事务的话,在方法上加上 @Transactional注解就行,如果需要加什么属性,再额外加上即可

基于xml的事务配置

在这里插入图片描述
注意:xml的事务配置可以和注解的事务配置同时使用,如果同时使用,注解的优先级更高

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-10-17 12:18:51  更:2022-10-17 12:23:34 
 
开发: 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/30 13:57:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码