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 ...
随机推荐
- ubuntu重复登录问题
第一次遇到: 昨天好不容易装好了驱动,紧接着装了CUDA,cuDNN,Anaconda,VSCode等等.然后安装pytorch的时候遇到了下载的问题,后来也算搞定了.但是在更换了显示器后重启(好像是 ...
- SPARK-18560
##### Receiver data can not be dataSerialized properly. ``` // :: ERROR executor.Executor: Exception ...
- Spring Boot 引入org.springframework.boot.SpringApplication出错
今天新建的一个spring boot maven项目, 写启动类时发现无法引入SpringApplication, 经查原来是冲突了,我早些时候用了比较低版本的spring boot创建了项目 ,导致 ...
- 基于nutch-1.2实现本地搜索引擎
声明:本博文参考了很多资料,主要来自http://blog.csdn.net/jiutao_tang/article/details/6461884/,http://www.cnblogs.com/x ...
- Codeforces 1154D - Walking Robot - [贪心]
题目链接:https://codeforces.com/contest/1154/problem/D 题解: 贪心思路,没有太阳的时候,优先用可充电电池走,万不得已才用普通电池走.有太阳的时候,如果可 ...
- [dev] Go语言查看doc与生成API doc
类似与javadoc,go也可以自动生成doc文档. 方法有两个: 1. 使用go doc工具 可以查看它的详细文档: go help doc 示例: 在这个目录下,我创建一个api包 ╰─>$ ...
- mysql 数据库的数据类型
- 用web技术写APP
_ 听说会写web的人也能写APP, 抱着尝试的心态踏上路体验一番 http://www.ionic.wang/start-index.html 0x00 框架环境介绍 ionic是什么? https ...
- SharePoint 已在此服务器场中安装 ID 为 XXXXXXXXX 的功能。请使用强制属性显式地重新安装此功能。解决方法
图1: 图2: 解决方法: stsadm -o deploysolution -name ***.wsp -immediate -allowGacDeployment -url http://*** ...
- spring注解:反射与配置
上图运行结果按下图配置文件中的配置,进行的spring扫描加载.无论是componentScan方式,还是xml配置方式,如果one是实现了一个接口的类,如one_Interface,那么在程序中用o ...