广告
返回顶部
首页 > 资讯 > 数据库 >spring事务与数据库事务
  • 322
分享到

spring事务与数据库事务

spring事务与数据库事务 2015-03-25 09:03:44 322人浏览 绘本
摘要

事务的ACID属性 A(Atomicity):原子性,事务要么都成功,要么都失败,是一个整体 C(Consistency):一致性,事务前后数据保持一致,如张三去银行取钱,取了500,则张三到手500,银行扣除500,总数不变 I(I

spring事务与数据库事务

事务的ACID属性

A(Atomicity):原子性,事务要么都成功,要么都失败,是一个整体

C(Consistency):一致性,事务前后数据保持一致,如张三去银行取钱,取了500,则张三到手500,银行扣除500,总数不变

I(Isolation):隔离性,多事务之间互相隔离,不受影响

D(Durability):持久性,事务一旦成功,其改变是永久性的。

Mysql的隔离级别

隔离级别 脏读 不可重复读 幻读
未提交读
提交读
可重复读(默认级别)
串行化

脏读:读到了无用的数据,事务A增加了一条数据未提交,事务B读到了这条数据,最后事务A事务回滚,事务B则读到了脏数据

不可重复读:同一事务两次读,读到的数据不一致,另一事务对数据进行了修改

幻读:同一事务两次读,后一次读到的数据多了,另一事务插入了一条数据。

oracle的隔离级别

支持两种隔离级别:读已提交(默认隔离级别)、串行化

二、spring的事务

spring事务的本质是数据库对事务的支持

单纯的jdbc想要想要用到事务,可以用以下步骤:

//1、获取连接
Connection con =DrivenManager.getConnection();
//2开启事务
con.setAutoConmmit(false);
//3执行CRUD

//4提交事务/回滚事务
con.commit()/con.rollback();
//5关闭连接
con.close();

而使用用spring @Trancational事务注解,spring会自动实现步骤2、4,那spring是如何字段实现2、4的呢?答案是:在spring启动时,spring通过配置文件或者注解生成相应的springbean,这个时候会查看拥有相关注解的类和方法,并且为这些类及方法生成相应的代理,并根据@Trancational中的参数,进行相关配置的注入,这样就通过代理的手段帮们实现了2、4步骤

真正的数据库底层的事务提交及回滚是通过binlog、redolog实现的

spring的隔离级别,与mysql的一致,多了一个默认级别

//默认隔离级别,取数据库的默认隔离级别
Isolation.DEFAULT
//读未提交
Isolation.READ_UNCOMMITTED
//读已提交
Isolation.READ_COMMITTED
//可重复读
Isolation.REPEATABLE_READ
//串行化(能解决脏读、不可重复读、幻读问题,但是效率低)
Isolation.SERIALIZABLE

spring的传播机制

支持当前事务 PROPAGATION_REQUIRED 如果当前没有事务,则新建,如果有,则加入
支持当前事务 PROPAGATION_SUPPORTS 支持当前事务,没有事务则不用事务
支持当前事务 PROPAGATION_MANDATORY 使用当前事务,没有则抛异常
不支持当前事务 PROPAGATION_REQUIRES_NEW 新建事务,若当前存在事务,则挂起当前事务
不支持当前事务 PROPAGATION_NOT_SUPPORTED 非事务,挂起当前事务
不支持当前事务 PROPAGATION_NEVER 非事务,当前存在事务则抛异常
内嵌事务 PROPAGATION_NESTED 如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与PROPAGATION_REQUIRED类似的操作。

事务对runtimeException(比如空指针、1/0 异常)会回滚,而Exception异常(如文件读写、网络问题)无法回滚,若需要Exception异常也回滚的话需要添加rollback=Exception.class

您可能感兴趣的文档:

--结束END--

本文标题: spring事务与数据库事务

本文链接: https://www.lsjlt.com/news/5925.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • spring事务与数据库事务
    事务的ACID属性 A(Atomicity):原子性,事务要么都成功,要么都失败,是一个整体 C(Consistency):一致性,事务前后数据保持一致,如张三去银行取钱,取了500,则张三到手500,银行扣除500,总数不变 I(I...
    99+
    2015-03-25
    spring事务与数据库事务
  • 数据库事务与特性
    数据库事务与特性 本文关键字:事务、原子性、一致性、隔离性、持久性事务是数据库中的一个概念,在交易系统和复杂业务中经常被提及。对于简单的增删改查场景,特别是学习阶段,不需要考虑诸如并发、锁等问题,但是我们要对事务的概念及特性有所了解,以便日...
    99+
    2016-08-02
    数据库事务与特性 数据库入门 数据库基础教程 数据库 mysql
  • Spring学习JdbcTemplate数据库事务参数
    目录Spring JdbcTemplate数据库事务参数一、propagation1. REQUIRED2. REQUIRES_NEW3. SUPPORTS4. NOT_SUPPOR...
    99+
    2022-11-13
  • spring学习JdbcTemplate数据库事务管理
    目录spring JdbcTemplate数据库事务管理一、spring 中的事务管理二、spring 事务管理 API三、使用事务管理1. 配置文件2. 类上添加事务注解sprin...
    99+
    2022-11-13
  • 数据库事务
    事务的四个特性 (ACID) ,分别是原子性( Atomicity), 一致性( Consistency), 隔离性( Isolation), 持久性( Durability)。一致性是事务的目的,原子性,...
    99+
    2022-10-18
  • Django数据库--事务及事务回滚
    数据库的读写操作中,事务在保证数据的安全性和一致性方面起着关键的作用,而回滚正是这里面的核心操作。Django的ORM在事务方面也提供了不少的API。有事务出错的整体回滚操作,也有基于保存点的部分回滚。本文将讨论Django中的这两种机制...
    99+
    2023-01-30
    事务 数据库 Django
  • Spring数据库事务的实现机制讲解
    目录事务控制的核心——Connection用AOP技术保持当前的ConnectionService层和Dao层共享Connection事务为什么要切在Service层的理由sprin...
    99+
    2022-11-12
  • 详解在Spring Boot中使用数据库事务
    我们在前面已经分别介绍了如何在spring Boot中使用JPA以及如何在Spring Boot中输出REST资源。那么关于数据库访问还有一个核心操作那就是事务的处理了,前面两篇博客小伙伴们已经见识到Spring Boot带给我们的巨大便利...
    99+
    2023-05-31
    spring boot 数据库
  • MySQL数据库(二)事务
    MySQL的存储引擎InnoDB支持事务,MyISAM不支持事物 数据库事务的四大特性(ACID) 原子性(atomic)  原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,这和前面两篇博客介绍事务的功能是一样的概念,因此事务...
    99+
    2017-02-17
    MySQL数据库(二)事务
  • 【数据库_03】MySQL-多表操作与事务
    二、子查询 1. 子查询的位置 ① 什么是子查询 * select 嵌套查询 * 示例 select ename,(select ename from emp ...
    99+
    2018-04-16
    【数据库_03】MySQL-多表操作与事务
  • 数据库事务系列-MySQL跨行事务模型
    说来和MySQL倒是有缘,毕业的第一份工作就被分配到了RDS团队,主要负责把MySQL弄到云上做成数据库服务。虽说整天和MySQL打交道,但说实话那段时间并没有很深入的理解MySQL内核,做的事情基本都是围绕着MySQL做管控系统,比较上层...
    99+
    2015-03-15
    数据库事务系列-MySQL跨行事务模型
  • 什么是数据库事务?
    什么是事务?事务是由一个或多个sql语句组成的一个整体,如果所有语句执行成功那么修改将会全部生效,如果一条sql语句将销量+1,下一条再+1,倘若第二条失败,那么销量将撤销第一条sql语句的+1操作,只有...
    99+
    2022-10-18
  • 浅谈数据库--事务(mysql)
    事务  事务其实是一组对数据库增删改操作的组合,可以这样来理解,当你往某个人身上打1000元的时候,在数据库中会发生两个改变,一个是你的钱减少了,另一个是那个人的钱增加了,这两个操作必须同时满足,...
    99+
    2022-10-18
  • 数据库基础-事务篇
    1、事务是什么              事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做。 2、事务的四大特性...
    99+
    2016-09-22
    数据库基础-事务篇
  • 使用spring框架实现数据库事务处理方式
    目录使用spring框架实现数据库事务处理JDBC对数据库事务处理的支持JDBC定义了五种事务隔离级别来解决这些并发导致的问题在spring框架中调用一个数据库事务处理分三步走:sp...
    99+
    2022-11-12
  • Spring事务管理中关于数据库连接池详解
    目录Spring事务管理环境搭建标准配置声明式事务总结SqlSessionFactoryXML中构建SqlSessionFactory获得SqlSession的实例代码实现作用域(S...
    99+
    2022-12-09
    Spring数据库连接池 Spring事务管理
  • Oracle数据库事务的开启与结束详解
    目录前言commitTruncate – DDLselect xxx for updateselect…for update使用方法失败的DML 和 exitDCL总结 前言...
    99+
    2022-06-23
    oracle数据库开启事务 oracle开启事务语句 oracle强制结束事务
  • spring事务相关
    PROPAGATION_REQUIRED -- 支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。 PROPAGATION_SUPPORTS -- 支持当前事务,如果当前没有事务,就以非事务方式执行。 PROPAGATION...
    99+
    2023-06-03
  • MySQL数据库提升篇-----事务
    day08 MySQL数据库提升篇-----事务一、事务概述:    事务在MySQL数据库中也是重要的一个部分,事务是由单独单元的一个或多个sql语句组成。每一个单...
    99+
    2022-10-18
  • 轻松获知数据库事务
    标题索引事务作用事务流程隔离级别实例验证事务作用    事务是确保数据库系统数据的完整性的功能,如现在互联网行业支付业务,不管服务器出于什么原因异常中断,客户要么支付成功要么支付不成功,...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作