索引:

目录索引

参看代码 GitHub:

1.Spring 事务

2.事务行为

一、Spring 事务:

Spring 的事务机制是用统一的机制来处理不同数据访问技术的事务处理。
Spring 的事务机制提供了一个 PlatformTransactionManager 接口,不同的数据访问技术的事务使用不同的接口实现:
JDBC -- DataSourceTransactionManager
JPA -- JpaTransactionManager
Hibernate -- HibernateTransactionManager
JDO -- JdoTransactionManager
分布式事务 -- JtaTransactionManager

二、事务行为

@Transactional 的属性可以定制事务的行为:
.propagation--定义事务的生命周期
默认值--Propagation.REQUIRED
Propagation.REQUIRED--方法A调用时没有事务新建一个事务,
当方法A调用另外一个方法B时,方法B将使用相同的事务,
如果此时方法B发生异常数据回滚的时候,整个事务将回滚。
Propagation.REQUIRES_NEW--对于方法A和B,
在方法调用的时候无论是否有事务存在都开启一个新的事务,
如果方法B有异常不会导致A方法的回滚。
Propagation.NESTED--与Propagation.REQUIRES_NEW相同,
支持JDBC,不支持JPA和Hibernate。
Propagation.SUPPORTS--方法调用时,有事务就用事务,没有就不用。
Propagation.NOT_SUPPORTED--强制方法不在事务中执行,
若有事务,在方法调用时,事务会先被挂起。
Propagation.NEVER--强制方法不在事务中执行,若有事务则抛出异常。
Propagation.MANDATORY--强制方法在事务中执行,若无事务则抛出异常。
.isolation--隔离决定事务的完整性,可以设置多事务对相同数据下的处理机制
默认值--Isolation.DEFAULT
Isolation.READ_UNCOMMITTED--对于在A事务里修改了一条记录但没有提交事务,
在B事务可以读取到修改后的记录,
可能导致脏读、不可重复读、以及幻读。
Isolation.READ_COMMITTED--只有当在A事务里修改了一条记录且提交事务之后,
B事务才可以读取到提交后的记录,
阻止脏读,但可能导致不可重复读和幻读。
Isolation.REPEATABLE_READ--具有Isolation.READ_COMMITTED的功能,
并且当A事务读取一条记录时,B事务将不能修改这条记录了,
阻止脏读、不可重复读,但可能导致幻读。
Isolation.SERIALIZABLE--此级别下事务是顺序执行的,可阻止脏读、不可重复读、幻读,但开销较大。
Isolation.DEFAULT--使用当前数据库的默认隔离级别,
Oracle--READ_COMMITTED
SqlServer--READ_COMMITTED
MySQL--REPEATABLE_READ
.timeout--事务过期时间,默认当前数据库事务的过期时间
.readOnly--指定当前事务是否是只读事务,默认 false
.rollbackFor--指定哪些异常引起事务回滚,
源码-- Class<? extends Throwable>[] rollbackFor() default {};
.noRollbackFor--指定哪些异常不引起事务回滚,
源码-- Class<? extends Throwable>[] noRollbackFor() default {};

                                         蒙

                                    2018-05-03 16:29 周四

                                    2018-05-11 22:41 周五

Spring 事务与脏读、不可重复读、幻读的更多相关文章

  1. 数据库事务隔离级别 - 分析脏读 & 不可重复读 & 幻读

    一 数据库事务的隔离级别 数据库事务的隔离级别有4个,由低到高依次为Read uncommitted .Read committed .Repeatable read .Serializable ,这 ...

  2. spring事务隔离级别以及脏读 不可重复读 幻影读

    隔离级别 声明式事务的第二个方面是隔离级别.隔离级别定义一个事务可能受其他并发事务活动活动影响的程度.另一种考虑一个事务的隔离级别的方式,是把它想象为那个事务对于事物处理数据的自私程度. 在一个典型的 ...

  3. Java -- JDBC 事务处理, 事务的隔离级别 脏读 不可重复读 等...

    1. 事务指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功. 数据库开启事务命令 •start transaction 开启事务 •Rollback  回滚事务 •Commit ...

  4. MYSQL事件隔离级别以及复读,幻读,脏读的理解

    一.mysql事件隔离级别 1未提交读(READUNCOMMITTED) 另一个事务修改了数据,但尚未提交,而本事务中的SELECT会读到这些未被提交的数据(脏读)( 隔离级别最低,并发性能高 ) 2 ...

  5. [原创]MySQL RR隔离级别下begin或start transaction开启事务后的可重复读?

    Server version:         5.6.21-log MySQL Community Server (GPL) 前提提要: 我们知道MySQL的RR(repeatable read)隔 ...

  6. mysql中事务隔离级别可重复读说明

    mysql中InnoDB引擎默认为可重复读的(REPEATABLE READ).修改隔离级别的方法,你可以在my.inf文件的[mysqld]中配置: transaction-isolation = ...

  7. MySQL事务(脏读、不可重复读、幻读)

    1. 什么是事务? 是数据库操作的最小工作单元,是作为单个逻辑工作单元执行的一系列操作:这些操作作为一个整体一起向系统提交,要么都执行.要么都不执行:事务是一组不可再分割的操作集合(工作逻辑单元): ...

  8. Mysql事务,并发问题,锁机制-- 幻读、不可重复读--专题

    1.什么是事务 事务是一条或多条数据库操作语句的组合,具备ACID,4个特点. 原子性:要不全部成功,要不全部撤销 隔离性:事务之间相互独立,互不干扰 一致性:数据库正确地改变状态后,数据库的一致性约 ...

  9. spring 事务传播特性 和隔离级别

    事务的几种传播特性1. PROPAGATION_REQUIRED: 如果存在一个事务,则支持当前事务.如果没有事务则开启2. PROPAGATION_SUPPORTS: 如果存在一个事务,支持当前事务 ...

随机推荐

  1. [Swift]LeetCode217. 存在重复元素 | Contains Duplicate

    Given an array of integers, find if the array contains any duplicates. Your function should return t ...

  2. qt4升级到qt5的一些问题

    由于最近项目使用的qt版本从qt4.8升级到qt5.5,虽然从4到5的变化不大,不过还是有许多的问题需要记录一下,希望可以帮助到更多的人​ 1.由于Qt5将大部分桌面部件移到了Qt Widgets模块 ...

  3. IdentityServer Topics(7)- 注销

    注销IdentityServer与删除身份cookie一样简单,但是我们必须考虑将用户从客户端应用程序(甚至可能是上游身份提供程序)中注销. 一.删除身份认证Cookie 要删除身证认证cookie, ...

  4. C# 《编写高质量代码改善建议》整理&笔记 --(一)基本语言篇

     题记:这是自己的观后感,工作两年了,本来打算好好学习设计模式,或者作为客户端深入了解GPU编程的,但是突然发现还有这么一本书. <编写高质量代码改善建议>,感觉这正是自己需要的. 我是做 ...

  5. plsql中的procedure和function编程

    procedure:存储过程 eg:   create or replace procedure p   --这儿是和plsql的区别         is         cursor c      ...

  6. Spring Boot分布式系统实践【2】-框架搭建

    前言 技术选型已经做完,那就来搭建框架了. 首先基于mvc思想,设计这套框架也是基于此,也会设计Dao层.Service层.Controller层.视图层等,同时也要考虑到dubbo的调用原理.   ...

  7. 【转载】asp.net core 2.0的认证和授权

    在asp.net core中,微软提供了基于认证(Authentication)和授权(Authorization)的方式,来实现权限管理的,本篇博文,介绍基于固定角色的权限管理和自定义角色权限管理, ...

  8. java集合框架容器 java框架层级 继承图结构 集合框架的抽象类 集合框架主要实现类

    本文关键词: java集合框架  框架设计理念  容器 继承层级结构 继承图 集合框架中的抽象类  主要的实现类 实现类特性   集合框架分类 集合框架并发包 并发实现类 什么是容器? 由一个或多个确 ...

  9. 我是这样理解HTTP和HTTPS区别的

    为何要用https? http协议的缺点 通信使用明文,内容可能被窃听(重要密码泄露) 不验证通信方身份,有可能遭遇伪装(跨站点请求伪造) 无法证明报文的完整性,有可能已遭篡改(运营商劫持) 用htt ...

  10. 委托初级篇——lambda表达式的推导

    public delegate void ConsoleWriteStr(string name,DateTime now); public delegate int DelegateAdd(int ...