一、事物1、什么是事物

事物指的是逻辑上的一组操作,这组操作要么全部成功,要么全部失败

2、事物的特性

原子性:事物是一个不可分割的工作单位,事物中的操作要么都发生,要么都不发生

一致性:事物前后数据的完整性必须保持一致

隔离性:指多个用户并发访问数据库时,一个用户的事物不能被其他用户的事物所干扰,多个并发事物之间数据要相互隔离。

持久性:一个事物一旦被提交,它对数据库中数据的改变就是永久性的,即使数据库发生故障也不应该对其有任何影响。

二、事物的API介绍

Spring事物管理高层抽象主要包括3个接口:PlatformTransactionManager(事务管理器)、TransactionDefinition(事物定义信息)、TransactionStatus(事物具体运行状态)。

1、PlatformTransactionManager

Spring为不同的持久化框架提供了不同PlatformTransactionManager接口实现

2、TransactionDefinition(1)定义隔离级别

如果不考虑隔离性,会引发如下安全问题:脏读、不可重复读、幻读

脏读:一个事物读取了另一个事物改写但还未提交的数据,如果这些数据被回滚,则读到的数据是无效的。

不可重复读:在同一个事物中,多次读取同一数据返回的结果有所不同

幻读:一个事物读取了几行记录后,另一个事物插入一些记录,幻读就发生了,在后来的查询中,第一个事物就会发现有些原来没有的记录。

事物的隔离级别就是用来解决以上问题:

Mysql数据库用的是REPEATABLE_READ隔离级别

Oracle数据库用的是READ_COMMITTED隔离级别

(2)定义事物传播行为

三、实战

Spring支持俩种方式事务管理

--编程式的事务管理

◎在实际应用中很少使用

◎通过TransactionTemplate手动管理事物

--使用XML配置声明式事物

◎开发中推荐使用(代码侵入性最小)

◎Spring的声明式事物是通过AOP实现的

1、编程式事务管理

手动编写代码进行事物管理(很少使用)

(1)在AccountService中使用TransactionTemplate

(2)TransactionTemplate依赖DataSourceTransactionManager

(3)DataSourceTransactionManager依赖DataSource构造

2、声明式事务管理

(1)基于TransactionProxyFactoryBean的方式

缺点:每需要对一个类进行事物管理,就需要配置一次,维护不方便

(2)基于AspectJ的XML方式(经常使用)

3、基于注解的方式(经常使用)

在需要事物管理的类上面加上注解

Spring事物管理简介 (转)的更多相关文章

  1. MyBatis6:MyBatis集成Spring事物管理(下篇)

    前言 前一篇文章<MyBatis5:MyBatis集成Spring事物管理(上篇)>复习了MyBatis的基本使用以及使用Spring管理MyBatis的事物的做法,本文的目的是在这个的基 ...

  2. Spring事物管理--相关要点及配置事物管理器

    事务的四大特征 1.原子性:一个事务中所有对数据库的操作是一个不可分割的操作序列,要么全做要么全不做 2.一致性:数据不会因为事务的执行而遭到破坏 3.隔离性:一个事物的执行,不受其他事务的干扰,即并 ...

  3. spring 事物管理没起到作用

    今天在做项目的时候发现配置的spring 事物管理没起到作用.可是配置又是依据官网配置的,不可能会错.最后发现使mysql的问题 普通情况下,mysql会默认提供多种存储引擎,你能够通过以下的查看: ...

  4. java陷阱之spring事物管理导致锁无效

    模拟锁情况无效 1.创建一个表 SET NAMES utf8mb4; ; DROP TABLE IF EXISTS `demo`; CREATE TABLE `demo` ( `id` ) NOT N ...

  5. 集成Spring事物管理

    什么是事物 事物是访问数据库的一个操作序列,数据库应用系统通过事物集来完成对数据库的存取.事物的正确执行使得数据库从一种状态转换为另一种状态. 事物必须服从ISO/IEC所制定的ACID原则.ACID ...

  6. SpringAOP和Spring事物管理

    Spring AOP : Pointcut表达式: designators-指示器 wildcards-通配符 operators-操作符 wildcards: * -- 匹配任意数量的字符 + -- ...

  7. Spring事物管理机制简单学习

    首先spring并不直接管理事物,而是提供了多种事物管理器,他们将事务管理的职责委托给Hibernate或者JTA等持久化机制所提供的相关平台框架的事务来实现. Spring管理事物的接口是org.s ...

  8. 【JAVA】Spring 事物管理

            在Spring事务管理中通过TransactionProxyFactoryBean配置事务信息,此类通过3个重要接口完成事务的配置及相关操作,分别是PlatformTransactio ...

  9. Spring事务管理简介

    © 版权声明:本文为博主原创文章,转载请注明出处 1.什么是事务 - 事务是指逻辑上的一组操作,这组操作要么全部成功,要么全部失败 2.事务特性(ACID) - 1.原子性(Atomicity):指事 ...

随机推荐

  1. js 将json字符串转换为json对象

    要引入:jquery-json-2.4.js 在数据传输过程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键.例如: JS ...

  2. DDD实战10 在项目中使用JWT的token

    在使用过程中报过一个错误:The algorithm: 'HS256' requires the SecurityKey.KeySize to be greater than '128' bits 是 ...

  3. Git学习笔记(两)

    删除文件 假设需要从Git删除文件,我们必须从删除列表中的跟踪文件(从临时区域中删除).然后提交.可以使用git rm工作订单完成.联合司令部从工作区删除指定的文件.以后就不会出如今未跟踪文件清单中. ...

  4. GoldenGate过程 abend,报错OGG-00868 ORA-02396: Exceeded Maximum Idle Time, Please Connect Again

    GoldenGate过程 abend,报错OGG-00868 ORA-02396: Exceeded Maximum Idle Time, Please Connect Again 参考原始: Gol ...

  5. abp项目 从sql server迁移至mysql

    官方资料:https://aspnetboilerplate.com/Pages/Documents/EF-MySql-Integration 实验发现,还差了两步 整理一下,步骤如下: 1.引用My ...

  6. Telnet协议详解(远程登陆协议)

    1. 概述 Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议.Telnet协议的目的是提供一个相对通用的,双向的,面向八位字节的通信方法,允许界面终端设备和面向终 ...

  7. Sql 执行查询顺序

  8. facebook javascript api 使用

    官方api文档:http://developers.facebook.com/docs 先简单的介绍下创建一个app(https://developers.facebook.com/apps),

  9. Github上的watch、star和fork分别是什么意思

    Github上的watch.star和fork分别是什么意思呢? 1.watch可以用来设置接收邮件提醒 2.如果想持续关注该项目就star一下 3.如果想将项目拷贝一份到自己的账号下就fork fo ...

  10. wcf服务端代码方式及客户端代码方式

    ServiceHost  host;  // 全局 host = new ServiceHost(typeof(实现服务接口的类)); host.open(); 用代码配置端点的方法 host.add ...