Spring的事务
事务:事务指的是逻辑上的一组操作,这组操作要么都成功,要么都失败。
Transaction事务的四大特性ACID:
1.Atomicity原子性
事务的操作要么都成功,要么都不做,只要有一个失败,就会回滚。
如A转账100给B:A转出100,B转入100,这两步要么一起完成,要么都不做。
2.Consistency一致性
事务的运行前后数据的完整性必须保持一致。
如A有200,B有200,一共400,A转给B100后,总金额还是400。
3.Isolation隔离性
并发的事务之间不会相互影响,多个并发事务之间的数据要相互隔离(设置隔离级别)。
如A转100给B:若事务未完成,B的账户是不会多100的。
4.Durability持久性
事务一旦提交,它所做的修改将永久的保存在数据库中,不会受其他方面的影响。
Spring中的事务管理介绍(高层抽象包括3个接口):
1.PlatformTransactionManager 事务管理器
2.TransactionDefinition 事务定义信息(隔离、传播、超时、只读)
3.TransactionStatus 事务具体运行状态
如果不考虑隔离性,会引发安全问题:
1.脏读:一个事务读取了另一个事务改写但还未提交的数据,如果这些数据被回滚,则读到的数据是无效的。
2.不可重复读:在同一事务中,多次读取同一数据返回的结果有所不同。
3.幻读:一个事务读取了几行记录后,另一个事务插入了几行数据,幻读就发生了。再后来的查询中,第一个事务就会发现有些原来没有的记录。 隔离级别:
DEFAULT : 使用后端数据库默认的隔离级别(Spring中的选择项)
READ_UNCOMMITED : 允许你读取还未提交的改变了的数据。可能导致脏、幻、不可重复读。
READ_COMMITTED : 允许在并发事务已经提交后读取。可防止脏读,但幻读和不可重复读仍可发生。(Oracle默认隔离级别)
REPEATABLE_READ : 对相同字段的多次读取是一致的,除非数据被事务本身改变。可防止脏、不可重复读,但幻读仍可能发生。(MySQL默认隔离级别)
SERIALIZABLE : 完全服从ACID的隔离级别,确保不发生脏、幻、不可重复读。在所有隔离级别中是最慢的,它是典型的通过完全锁定在事务中涉及的数据表来完成的。 事务的传播行为:解决业务层之间的相互调用。同时调用业务层中不同类的方法
PROPAGATION_REQUIRED : 支持当前事务,如果不存在,就新建一个。
PROPAGATION_SUPPORTS : 支持当前事务,如果不存在,就不使用事务。
PROPAGATION_MANDATORY : 支持当前事务,如果不存在,抛出异常。
PROPAGATION_REQUIRES_NEW : 如果有事务存在,挂起当前事务,创建一个新的事务。
PROPAGATION_NOT_SUPPORTED : 以非事务方式运行,如果有事务存在,挂起当前事务。
PROPAGATION_NEVER : 以非事务方式运行,如果有事务存在,抛出异常。
PROPAGATION_NESTED : 如果当前事务存在,则嵌套事务执行。
Spring的事务的更多相关文章
- Spring的事务管理
事务 事务:是逻辑上一组操作,要么全都成功,要么全都失败. 事务特性(ACID) 原子性:事务不可分割 一致性:事务执行的前后,数据完整性保持一致 隔离性:一个事务执行的时候,不应该受到其他事务的打扰 ...
- spring笔记--事务管理之声明式事务
事务简介: 事务管理是企业级应用开发中必不可少的技术,主要用来确保数据的完整性和一致性, 事务:就是一系列动作,它们被当作一个独立的工作单元,这些动作要么全部完成,要么全部不起作用. Spring中使 ...
- (spring-第20回【AOP基础篇】)Spring与事务
要想了解Spring的事务,首先要了解数据库事务的基本知识,数据库并发会产生很多问题,Spring使用ThreadLocal技术来处理这些问题,那么我们必须了解Java的ThreadLocal技术.下 ...
- spring的事务操作
我们项目一期已经差不多结束了,所以一些细节也被拿了出来,出现最多的就是事务的操作了.因为自己负责的是一个模块(因为是另外一个项目的负责人),所以组员经常会遇到事务的问题,会出现很多奇葩的用法,各种乱用 ...
- Spring MVC 事务配置
Spring MVC事务配置 要了解事务配置的所有方法,请看一下<Spring事务配置的5种方法> 本文介绍两种配置方法: 一. XML,使用tx标签配置拦截器实现事务 一. ...
- Spring应用——事务管理
事务基础:请参看:http://www.cnblogs.com/solverpeng/p/5720306.html 一.Spring 事务管理 1.前提:事务管理器 在使用 Spring 声明式事务管 ...
- Spring(九)Spring对事务的支持
一.对事务的支持 事务:是一组原子操作的工作单元,要么全部成功,要么全部失败 Spring管理事务方式: JDBC编程事务管理:--可以控制到代码中的行 可以清楚的控制事务的边界,事务控制粒度化细(编 ...
- spring+mybatis事务管理
spring+mybatis事务管理 最近在和朋友做一个项目,考虑用springmvc+mybatis来做,之前在公司工作吧,对于数据库这块的配置也有人再弄,最近因为这个项目,我就上网学习了一些关于数 ...
- spring,mybatis事务管理配置与@Transactional注解使用[转]
spring,mybatis事务管理配置与@Transactional注解使用[转] spring,mybatis事务管理配置与@Transactional注解使用 概述事务管理对于企业应用来说是至关 ...
- Spring对事务的处理
1.加入spring-jdbc.jar包 2.配置数据源 3.配置spring事务管理器,spring的事务出现在业务层. <bean id="dataSource" cla ...
随机推荐
- 问题11:web前端开发规范手册(转)
一.规范目的 1.1 概述 ..................................................................................... ...
- Web项目中手机注册短信验证码实现的全流程及代码
最近在做只能净化器的后台用户管理系统,需要使用手机号进行注册,找了许久才大致了解了手机验证码实现流程,今天在此和大家分享一下. 我们使用的是榛子云短信平台, 官网地址:http://smsow.zhe ...
- Nginx+Https自己敲命令生成证书
nginx配置https访问 一.准备 环境:centos6.8 nginx:1.13.6 二.开始 首先安装依赖包: yum install -y gcc gcc-c++ autocon ...
- word/pdf互转的链接
参考链接 http://www.greenxf.com/soft/98467.html
- 螺旋矩阵 java实现(待消化)
import java.util.Scanner; /** * @author:(LiberHome) * @date:Created in 2019/3/4 17:13 * @description ...
- mysql 查询 练习题及答案
CREATE DATABASE school;USE school;/*1.创建student表格*//*id为主键 非空 唯一 */CREATE TABLE student (id INT(10) ...
- linux开通端口允许其他机器访问
命令开通8080端口允许其他机器对linux的访问: iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
- 上传及更新代码到github(以及如何在vscode上提交自己的代码)
上传本地代码 第一步:去github上创建自己的Repository,创建页面如下图所示: 红框为新建的仓库的https地址 第二步: echo "# Test" >> ...
- day22:初识面向对象
1,类可以理解为是一个模子,可以是代码精简,方便增加实例,方便修改,更加规范,能知道具体的属性,方法,但是不知道具体的值 2,对象有具体的值,属性和技能都是根据类规范的 3, 先有类才有对象 4,面向 ...
- 去除桌面SVN问号
由于误操作,桌面文件全部带着问号. 找到一种比较方便的方法解决. 1.显示受保护文件.文件夹win7系统 - 随便打开一个文件夹 - 在菜单栏里点 工具 - 文件夹选项 - 查看 以下如图中选择 2 ...