Spring的事务管理1
事务的回顾:
- 事务:逻辑上的一组操作,组成这组事务的各个单元,要么全部成功,要么全部失败
事务的特性:ACID
- 原子性(Atomicity):事务不可分割
- 一致性(Consistency):事务执行前后数据完整性保持一致
- 隔离性(Isolation):一个事务执行不应该受到其他事务的干扰
- 持久性(Durability):一旦事务结束,数据就持久化到数据库
如果不考虑隔离性引发安全问题:
读问题:
- 脏读:一个事务读到另一个事务未提交的数据
- 不可重复读:一个事务读到另一个事务已经提交的update数据,导致另一个事务中多次查询结果不一致
- 虚读、幻读:一个事务读到另一个事务已经提交的insert数据,导致另一个事务中多次查询结果不一致
解决读问题:
设置事务的隔离级别:开发常用二三。非常安全,效率低。
- Read uncommitted: 未提交读,任何读问题解决不了
- Read Committeed : 已提交读, 解决脏读,但是不可重复读和虚读有可能发生。Oracle
- Repeatable read : 重复读,解决脏读和不可重复读,但是虚读有可能发生。mysql
- Serializable: 解决所有读问题
写问题:
- 丢失更新
事务管理的API:
PlatformTransactionManager:平台事务管理器
平台事务管理器:接口,是Spring管理事务的真正对象
- DataSourceTransactionManager:底层是JDBC管理事务
- HibernateTransactionManager:底层是Hibernate管理事务
TransactionDefinition:事务定义信息
- 事务定义:用于定义事务的相关信息,隔离级别,超时信息、传播行为、是否只读。
- TransactionStates:事务的状态,用于记录在事务管理过程中事务的状态的对象。
TransactionStates:事务的状态
- 事务状态:用于记录在事务管理过程中,事务的状态的对象。
事务管理的API的关系:
Spring进行事务管理的时候,首先是平台事务管理器根据事务定义信息进行事务的管理。
在事务管理过程中,产生各种状态,将这些状态信息记录到事务状态的对象中。
Spring事务的传播行为:主要解决事务在业务层方法相互调用的问题
Spring中提供了七种事务的传播行为:
保证多个操作在同一个事务中
PROPAGATION_REQUIRED :默认值,如果A中有事务,使用A中的事务,如果A没有,创建一个新的事务,将操作包含进来
PROPAGATION_SUPPORTS :支持事务,如果A中有事务,使用A中的事务。如果A没有事务,不使用事务。
PROPAGATION_MANDATORY :如果A中有事务,使用A中的事务。如果A没有事务,抛出异常。
保证多个操作不在同一个事务中
PROPAGATION_REQUIRES_NEW :如果A中有事务,将A的事务挂起(暂停),创建新事务,只包含自身操作。如果A中没有事务,创建一个新事务,包含自身操作。
PROPAGATION_NOT_SUPPORTED :如果A中有事务,将A的事务挂起。不使用事务管理。
PROPAGATION_NEVER :如果A中有事务,报异常。
嵌套式事务
PROPAGATION_NESTED :嵌套事务,如果A中有事务,按照A的事务执行,执行完成后,设置一个保存点,执行B中的操作,如果没有异常,执行通过,如果有异常,可以选择回滚到最初始位置,也可以回滚到保存点。

Spring的事务管理1的更多相关文章
- Spring的事务管理
事务 事务:是逻辑上一组操作,要么全都成功,要么全都失败. 事务特性(ACID) 原子性:事务不可分割 一致性:事务执行的前后,数据完整性保持一致 隔离性:一个事务执行的时候,不应该受到其他事务的打扰 ...
- spring笔记--事务管理之声明式事务
事务简介: 事务管理是企业级应用开发中必不可少的技术,主要用来确保数据的完整性和一致性, 事务:就是一系列动作,它们被当作一个独立的工作单元,这些动作要么全部完成,要么全部不起作用. Spring中使 ...
- Spring应用——事务管理
事务基础:请参看:http://www.cnblogs.com/solverpeng/p/5720306.html 一.Spring 事务管理 1.前提:事务管理器 在使用 Spring 声明式事务管 ...
- spring+mybatis事务管理
spring+mybatis事务管理 最近在和朋友做一个项目,考虑用springmvc+mybatis来做,之前在公司工作吧,对于数据库这块的配置也有人再弄,最近因为这个项目,我就上网学习了一些关于数 ...
- spring,mybatis事务管理配置与@Transactional注解使用[转]
spring,mybatis事务管理配置与@Transactional注解使用[转] spring,mybatis事务管理配置与@Transactional注解使用 概述事务管理对于企业应用来说是至关 ...
- Spring高级事务管理难点剖析
1Spring事务传播行为 所谓事务传播行为就是多个事务方法相互调用时,事务如何在这些方法间传播.Spring支持7种事务传播行为 PROPAGATION_REQUIRED(加入已有事务) 如果当前没 ...
- CSDN上看到的一篇有关Spring JDBC事务管理的文章(内容比较全) (转)
JDBC事务管理 Spring提供编程式的事务管理(Programmatic transaction manage- ment)与声明式的事务管理(Declarative transaction ma ...
- Spring之事务管理
事务管理对于企业应用至关重要.它保证了用户的每一次操作都是可靠的,即便出现了异常的访问情况,也不至于破坏后台数据的完整性. 就像银行的自助取款机,通常都能正常为客户服务,但是也难免遇到 ...
- Mybatis整合Spring实现事务管理的源码分析
一:前言 没有完整看完,但是看到了一些关键的地方,这里做个记录,过程会有点乱,以后逐渐补充最终归档为完整流程:相信看过框架源码的都知道过程中无法完全确定是怎样的流程,毕竟不可能全部都去测试一遍 ,但是 ...
- Hibernate与Spring的事务管理
什么是事务 这个问题比较大,按照我的理解就是,一个事务内的n个操作,要么全部完成,一旦有一个操作有问题,那么所有的操作都全部回滚. Jdbc的事务 首先,大家已经知道了,事务说白了就是一个词----统 ...
随机推荐
- JVM(二)—— 垃圾回收
垃圾回收 垃圾回收主要解决三个问题(回收哪些Which,什么时候回收WHEN,如何回收HOW) 一.回收哪些 这三个问题,最主要的还是第一个,Which回收哪些,评断回收还是不回收的标准是看对象是否被 ...
- 有关于MVC SignalR的问题
刚拜读 @Learning hard 的 [Asp.net 开发系列之SignalR篇]专题一:Asp.net SignalR快速入门 跟着博文一步步操作,这是新人的学习方式 然而笔者的开发环境和 @ ...
- 依然是关于我空间那篇申请的日志《JavaScript axError:Unexpected token ILLEGAL 很简单的代码……》
接下来要讲的日志现在的标题已经更改为<很简单的代码,但是无法--> 这篇日志地址:http://www.cnblogs.com/herbertchina/p/4475092.html 经过 ...
- sqlserver 操作数据表语句模板
从网上搜的,一点一点加吧. -----------设置事务全部回滚----------------- SET XACT_ABORT ON BEGIN BEGIN TRY BEGIN TRANSACTI ...
- 从零开始学安全(三)●黑客常用的windows端口
端口可选1-65536 1-1024 预保留端口 留给windows系统服务的 下面是常见的端口对应的服务 1 TCP Port Service Multiplexer 传输控制协议端口服务多路开关选 ...
- T-SQL基础(六)之可编程对象
变量 -- 声明变量 DECLARE @variable_name [AS] variable_type; -- 变量赋值 SET @variable_name = variable_value; 示 ...
- 动态编程(Dynamic Programming)
本文素材来自视频,请自备梯子观看:What Is Dynamic Programming and How To Use It Dynamic Programming:动态编程分为如下几步: 将复杂问题 ...
- 多线程(二)ThreadLocal
ThreadLocal public class Demo extends Thread{ static int i = 0; public Integer getNext(){ i++; retur ...
- ReactDom
今天工作中使用了这个,感觉很好用啊! 首先: 这个ReactDom是干嘛用的? 答: react-dom 包提供了 DOM 特定的方法,可以在你的应用程序的顶层使用,如果你需要的话,也可以作为 R ...
- mybatis全局属性(全局变量)
mybatis全局属性(全局变量):方法1:在 properties 元素体内,使用<property>标签定义的属性方法2:在 properties 元素中, 使用 resource 或 ...