Spring的事务管理(理论篇,下篇提供代码实现)
事务:逻辑上的一组操作,这组操作要么全部成功,要么全部失败(事务十大特性:原子性,一致性,隔离性,持久性)
原子性:事务是不可分割的工作单位,事务中的操作要么都发生了,要么都不发生。(也就是说不能单独运行)
事务的一致性:事务前后数据的完整性必须保持一致
隔离性:多个用户并发访问数据库时,一个用户的事务不能被其他用户事务所干扰,多个并发事务之间的数据要相互隔离
事务的持久性:一个事务被提交,他对数据库的数据进行修改,即使数据库发生故障也不应该被影响
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的事务管理(理论篇,下篇提供代码实现)的更多相关文章
- Spring学习笔记五:Spring进行事务管理
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6776256.html 事务管理主要负责对持久化方法进行统一的提交或回滚,Spring进行事务管理即我们无需在 ...
- CSDN上看到的一篇有关Spring JDBC事务管理的文章(内容比较全) (转)
JDBC事务管理 Spring提供编程式的事务管理(Programmatic transaction manage- ment)与声明式的事务管理(Declarative transaction ma ...
- Spring系列.事务管理
Spring提供了一致的事务管理抽象.这个抽象是Spring最重要的抽象之一, 它有如下的优点: 为不同的事务API提供一致的编程模型,如JTA.JDBC.Hibernate和MyBatis数据库层 ...
- Spring系列.事务管理原理简析
Spring的事务管理功能能让我们非常简单地进行事务管理.只需要进行简单的两步配置即可: step1:开启事务管理功能 @Configuration //@EnableTransactionManag ...
- Spring的事务管理
事务 事务:是逻辑上一组操作,要么全都成功,要么全都失败. 事务特性(ACID) 原子性:事务不可分割 一致性:事务执行的前后,数据完整性保持一致 隔离性:一个事务执行的时候,不应该受到其他事务的打扰 ...
- Spring应用——事务管理
事务基础:请参看:http://www.cnblogs.com/solverpeng/p/5720306.html 一.Spring 事务管理 1.前提:事务管理器 在使用 Spring 声明式事务管 ...
- spring,mybatis事务管理配置与@Transactional注解使用[转]
spring,mybatis事务管理配置与@Transactional注解使用[转] spring,mybatis事务管理配置与@Transactional注解使用 概述事务管理对于企业应用来说是至关 ...
- Spring高级事务管理难点剖析
1Spring事务传播行为 所谓事务传播行为就是多个事务方法相互调用时,事务如何在这些方法间传播.Spring支持7种事务传播行为 PROPAGATION_REQUIRED(加入已有事务) 如果当前没 ...
- Spring之事务管理
事务管理对于企业应用至关重要.它保证了用户的每一次操作都是可靠的,即便出现了异常的访问情况,也不至于破坏后台数据的完整性. 就像银行的自助取款机,通常都能正常为客户服务,但是也难免遇到 ...
- Hibernate与Spring的事务管理
什么是事务 这个问题比较大,按照我的理解就是,一个事务内的n个操作,要么全部完成,一旦有一个操作有问题,那么所有的操作都全部回滚. Jdbc的事务 首先,大家已经知道了,事务说白了就是一个词----统 ...
随机推荐
- 洛谷 P1028 数的计算【递推】
P1028 数的计算 题目描述 我们要求找出具有下列性质数的个数(包含输入的自然数n): 先输入一个自然数n(n<=1000),然后对此自然数按照如下方法进行处理: 1.不作任何处理; 2.在它 ...
- A * B Problem Plus(fft)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1402 hdu_1402:A * B Problem Plus Time Limit: 2000/100 ...
- HDU--1213并查集
题目传送门:HDU--1213 //题意:ignatius过生日,客人来到,他想知道他需要准备多少张桌子.然而一张桌子上面只能坐上相互熟悉的人, //其中熟悉可定义成为A与B认识,B与C认识,我们就说 ...
- js获取不带单位的像素值
所谓获取不带单位的像素值就是获取比如元素的宽度.高度.字体大小.外边距.内边距等值但是去掉像素单位. 比如:某一个元素的宽度是100px,现在我要获取这个这个值但是不带单位“px”,对于这种问题你会怎 ...
- 用adb录制手机屏幕视频
adb shell screenrecord命令可以用来录制Android手机视频 screenrecord是一个shell命令,支持Android4.4(API level 19)以上,支持视频格式 ...
- win处navicat直接导出的sql脚本导入Linux mysql报错问题
最近几天在把win上的项目的数据库转移到Ubuntu,于是第一件事就是从win处的navicat直接导出sql脚本,然后进入Ubuntu导入的时候会报错误,跳过错误继续执行导致数据库表的缺失. 跨平台 ...
- Android之MaterialDesign应用技术
PS:纵观现在大大小小软件的界面都变的比较漂亮,还有一些系统了,比如小米的MIUI,华为的EMUI等,虽然底层都是安卓,但他们的界面多多少少都会不同,谷歌对这个UI也是非常重视的,MaterialDe ...
- DOS基本命令(基本部分)
一.cls(clear screen的简写) 命令作用:清屏屏幕 详细介绍:屏幕显示的所有字符信息都是存放在一个屏幕缓冲区中,cls命令的作用是清除屏幕上的文字,并将该缓冲区清空. 二.dir(dir ...
- nodejs http小爬虫
本课程用nodejs写一个http小爬虫,首先科普一下,爬虫就是把网上的网页代码给弄下来,然后纳为己用.目前最大的爬虫:百度快照等的. 下面直接上代码 示例一: var http = require( ...
- 配置python+mod_wsgi+apache 时 在浏览器中访问服务器时报错:Invalid HTTP_HOST header: 'XXXXX'. You may need to add u'XXXXX' to ALLOWED_HOSTS,在setting.py中添加‘*”无效的原因
配置python+mod_wsgi+apache 时 在浏览器中访问服务器时报错:Invalid HTTP_HOST header: 'XXXXX'. You may need to add u'XX ...