索引:

目录索引

参看代码 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. python-类的定制

    1.看到类似__slots__这种形如__xxx__的变量或者函数名就要注意,这些在Python中是有特殊用途的.__slots__我们已经知道怎么用了,__len__()方法我们也知道是为了能让cl ...

  2. 熟悉使用Github,VS进行项目的开发(第二次作业)

    git地址 https://github.com/Jason98w git用户名 Jason98w 学号后5位 72323 博客地址 https://www.cnblogs.com/jason5689 ...

  3. BBS论坛(二十八)

    28.1.帖子分页功能完成 (1)manage.py 通过命令生成100个帖子,用于测试 @manager.command def create_test_post(): for x in range ...

  4. expect--自动批量分发公钥脚本

    1.在使用之前,先安装epel源,yum install expect -y2.写分发脚本,后缀为exp #!/usr/bin/expect set host_ip [lindex $argv 0] ...

  5. solr之环境配置二

    安装配置Tomcat 下载Tomcat压缩包 我下载的是7.0.55版本. 1.Tomcat 7.0 的免安装版的配置(假如将Tomcat 解压到C:\Program Files目录,目录结构为:C: ...

  6. SpringBoot入门教程(六)SpringBoot2.0统一处理404,500等http错误跳转页

    在做web项目的时候,大家对404.500等http状态码肯定并不陌生.然而无论是哪种"非正常"状态码,都不是我们想遇到的.尤其像一些500这种服务器内部错误,不愿意展示给用户的, ...

  7. [四] java虚拟机JVM编译器编译代码简介 字节码指令实例 代码到底编译成了什么形式

      前言简介   前文已经对虚拟机进行过了简单的介绍,并且也对class文件结构,以及字节码指令进行了详尽的说明 想要了解JVM的运行机制,以及如何优化你的代码,你还需要了解一下,java编译器到底是 ...

  8. springboot+cloud 学习(五)统一配置中心 spring cloud config + cloud bus + WebHooks +RibbitMQ

    前言 微服务要实现集中管理微服务配置.不同环境不同配置.运行期间也可动态调整.配置修改后可以自动更新的需求,Spring Cloud Config同时满足了以上要求.Spring Cloud Conf ...

  9. java web 项目打包(war 包)并部署

    1.在eclipse中右键单击项目,然后Export选择WAR file,生成项目的WAR文件.具体步骤请看图片详细操作步骤: 2.把生成的WAR文件放到tomcat解压之后的webapps文件夹下. ...

  10. Perl IO:IO重定向

    文件句柄和文件描述符的关系 文件描述符是操作系统的资源,对于实体文件来说,每打开一次文件,操作系统都会为该进程分配一个文件描述符来关联(指向)这个文件,以后操作文件数据都根据这个文件描述符来操作,而不 ...