事务:逻辑上的一组操作,这组操作要么全部成功,要么全部失败(事务十大特性:原子性,一致性,隔离性,持久性)

原子性:事务是不可分割的工作单位,事务中的操作要么都发生了,要么都不发生。(也就是说不能单独运行)

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

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

事务的持久性:一个事务被提交,他对数据库的数据进行修改,即使数据库发生故障也不应该被影响

           Spring接口介绍----------事务管理

Spring 事务管理搞层抽象的主要三个接口:

PlatformTransactionManager:事务管理

TransactionDefinition:事务定义信息(隔离性,传播性,超时,只读)

TransactionStatus:事务具体运行状态

            PlatformTransactionManager的具体实现类

Spring为了满足不同的持久层框架,提供了不同的PlatformTransactionManager接口实现:

org.springframework.jdbc.datasource.DataSurceTransactionManager:使用Spring JDBC或者iBatis进行持久化数据时使用的

org.springFramework.orm.hibernate3.HibernateTransactionManager:使用Hibernate3.0版本进行持久化数据时使用

1.不考虑隔离性,会引发:脏读,不可重复读,幻读

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

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

幻读:一个事务读取了几行记录后,另一个事务藏入一些记录,幻读就发生了,再后来的查询红,第一个事务就会发现有些原来的

没有的记录。

TransactionDefinition:定义隔离级别

数据中的四种隔离级别:

DEFAULT :使用后端数据库磨人的隔离级别(Spring中的选项)

READ_UNCOMMITED:允许你读取还未提交的改变了的数据,可导致脏,幻,不可重复

READ_COMMITTED:允许在并发事务已经提交后读取。可防止脏读,但幻读何不可重复可能会发生

REPEATABLE_READ:对相同字段的多次读取是一致的,除非数据事务本身改变,可防止脏,不可重复读,但幻读可能会发生

SERIALIZABLE:完全服从ACID的隔离级别,确保不发生脏,幻,不可重读。这在所有的隔离级别中是最慢的,他是典型的锁在事务涉及的数据表来完成的.

             事务中的传播行为

PROPAGATION_REQUIRED:支持当前事务,如果不存在就建一个

PROPAGATION_REQUIRES_NEW :如果有事务存在,挂起当前事务,创建一个新的事务

PROPGATION_NESTED:如果当前事务存在,则嵌套事务执行    

                  Spring 事务管理的两种方式

编程式的事务管理

1.通过接口transactionTemplate手动管理事务(不推荐)

使用XML配置声明的事务

1.开发中推荐使用,通过Spring的声明式事务是通过AOP实现的(推荐)

Spring的事务管理(理论篇,下篇提供代码实现)的更多相关文章

  1. Spring学习笔记五:Spring进行事务管理

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6776256.html  事务管理主要负责对持久化方法进行统一的提交或回滚,Spring进行事务管理即我们无需在 ...

  2. CSDN上看到的一篇有关Spring JDBC事务管理的文章(内容比较全) (转)

    JDBC事务管理 Spring提供编程式的事务管理(Programmatic transaction manage- ment)与声明式的事务管理(Declarative transaction ma ...

  3. Spring系列.事务管理

    Spring提供了一致的事务管理抽象.这个抽象是Spring最重要的抽象之一, 它有如下的优点: 为不同的事务API提供一致的编程模型,如JTA.JDBC.Hibernate和MyBatis数据库层 ...

  4. Spring系列.事务管理原理简析

    Spring的事务管理功能能让我们非常简单地进行事务管理.只需要进行简单的两步配置即可: step1:开启事务管理功能 @Configuration //@EnableTransactionManag ...

  5. Spring的事务管理

    事务 事务:是逻辑上一组操作,要么全都成功,要么全都失败. 事务特性(ACID) 原子性:事务不可分割 一致性:事务执行的前后,数据完整性保持一致 隔离性:一个事务执行的时候,不应该受到其他事务的打扰 ...

  6. Spring应用——事务管理

    事务基础:请参看:http://www.cnblogs.com/solverpeng/p/5720306.html 一.Spring 事务管理 1.前提:事务管理器 在使用 Spring 声明式事务管 ...

  7. spring,mybatis事务管理配置与@Transactional注解使用[转]

    spring,mybatis事务管理配置与@Transactional注解使用[转] spring,mybatis事务管理配置与@Transactional注解使用 概述事务管理对于企业应用来说是至关 ...

  8. Spring高级事务管理难点剖析

    1Spring事务传播行为 所谓事务传播行为就是多个事务方法相互调用时,事务如何在这些方法间传播.Spring支持7种事务传播行为 PROPAGATION_REQUIRED(加入已有事务) 如果当前没 ...

  9. Spring之事务管理

        事务管理对于企业应用至关重要.它保证了用户的每一次操作都是可靠的,即便出现了异常的访问情况,也不至于破坏后台数据的完整性.     就像银行的自助取款机,通常都能正常为客户服务,但是也难免遇到 ...

  10. Hibernate与Spring的事务管理

    什么是事务 这个问题比较大,按照我的理解就是,一个事务内的n个操作,要么全部完成,一旦有一个操作有问题,那么所有的操作都全部回滚. Jdbc的事务 首先,大家已经知道了,事务说白了就是一个词----统 ...

随机推荐

  1. Java面向对象抽象类案例分析

    /** 雇员示例: 需求:公司中程序员有姓名,工号,薪水,工作内容 项目经理除了有姓名,工号,薪水还有奖金,工作内容 对给出需求进行数据建模 分析: 在这个问题领域中,先找出涉及的对象 通过名词提炼法 ...

  2. ubuntu sendmail配置发送邮件

    ubuntu中sendmail函数可以很方便的发送邮件,ubuntu sendmail先要安装两个包. 必需安装的两个包: 代码  sudo apt-get install sendmail sudo ...

  3. 基于 fireasy 构建的 asp.net core 示例

    最近花时间弄了一个关于fireasy使用的demo,已放到 github 上供大家研究,https://github.com/faib920/zero 该 demo 演示了如何使用 fireasy 创 ...

  4. Centos6.7安装mysql 5.6简单教程

    今天项目经理让我给服务器配一下mysql,以前配置mysql的时候,感觉好麻烦,前几天也帮朋友配置来着,今天装的时候一直报错,百度也没搞明白,所以打算换种方法装mysql,无意中发现了还有这种操作,容 ...

  5. zookeeper部署和运行

    环境准备: 操作系统,此处使用windows系统 Java运行环境,JDK1.6以上 下载对应操作系统zookeeper安装包zookeeper-x.x.x.tar.gz,下载地址:http://zo ...

  6. for循环,数组

    for (var a=0; a<10; a++ ) for循环 声明a为0 循环a=9时(10次) 每循环一次a的值+1; { 循环体 } var a=Attr();var a=[];数组; / ...

  7. vue ajax获取数据的时候,如何保证传递参数的安全或者说如何保护api的安全

    https://segmentfault.com/q/1010000005618139 vue ajax获取数据的时候,如何保证传递参数的安全或者说如何保护api的安全 点击提交,发送请求.但是api ...

  8. 利用光场进行深度图估计(Depth Estimation)算法之一——聚焦算法

    前面几篇博客主要说了光场相机,光场相机由于能够记录相机内部整个光场,可以实现重聚焦(模糊线索)和不同视角的变换(视差线索),同时也可以利用这个特性进行深度估计(Depth Estimation). 先 ...

  9. Angular 4 自定义组件封装遇见的一些事儿

    你用Angular 吗? 一.介绍 说说封装Angular 组建过程中遇见的一些问题和感悟.用久了Angular,就会遇见很多坑,许多基于Angular开发的框架最喜欢做的事情就是封装组件,然后复用. ...

  10. python 与rabbitmq

    一.rabbitmq简介.安装 简介: MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专 ...