Spring事物管理简介 (转)
一、事物1、什么是事物
事物指的是逻辑上的一组操作,这组操作要么全部成功,要么全部失败
2、事物的特性
原子性:事物是一个不可分割的工作单位,事物中的操作要么都发生,要么都不发生
一致性:事物前后数据的完整性必须保持一致
隔离性:指多个用户并发访问数据库时,一个用户的事物不能被其他用户的事物所干扰,多个并发事物之间数据要相互隔离。
持久性:一个事物一旦被提交,它对数据库中数据的改变就是永久性的,即使数据库发生故障也不应该对其有任何影响。
二、事物的API介绍
Spring事物管理高层抽象主要包括3个接口:PlatformTransactionManager(事务管理器)、TransactionDefinition(事物定义信息)、TransactionStatus(事物具体运行状态)。
1、PlatformTransactionManager
Spring为不同的持久化框架提供了不同PlatformTransactionManager接口实现
2、TransactionDefinition(1)定义隔离级别
如果不考虑隔离性,会引发如下安全问题:脏读、不可重复读、幻读
脏读:一个事物读取了另一个事物改写但还未提交的数据,如果这些数据被回滚,则读到的数据是无效的。
不可重复读:在同一个事物中,多次读取同一数据返回的结果有所不同
幻读:一个事物读取了几行记录后,另一个事物插入一些记录,幻读就发生了,在后来的查询中,第一个事物就会发现有些原来没有的记录。
事物的隔离级别就是用来解决以上问题:
Mysql数据库用的是REPEATABLE_READ隔离级别
Oracle数据库用的是READ_COMMITTED隔离级别
(2)定义事物传播行为
三、实战
Spring支持俩种方式事务管理
--编程式的事务管理
◎在实际应用中很少使用
◎通过TransactionTemplate手动管理事物
--使用XML配置声明式事物
◎开发中推荐使用(代码侵入性最小)
◎Spring的声明式事物是通过AOP实现的
1、编程式事务管理
手动编写代码进行事物管理(很少使用)
(1)在AccountService中使用TransactionTemplate
(2)TransactionTemplate依赖DataSourceTransactionManager
(3)DataSourceTransactionManager依赖DataSource构造
2、声明式事务管理
(1)基于TransactionProxyFactoryBean的方式
缺点:每需要对一个类进行事物管理,就需要配置一次,维护不方便
(2)基于AspectJ的XML方式(经常使用)
3、基于注解的方式(经常使用)
在需要事物管理的类上面加上注解
Spring事物管理简介 (转)的更多相关文章
- MyBatis6:MyBatis集成Spring事物管理(下篇)
前言 前一篇文章<MyBatis5:MyBatis集成Spring事物管理(上篇)>复习了MyBatis的基本使用以及使用Spring管理MyBatis的事物的做法,本文的目的是在这个的基 ...
- Spring事物管理--相关要点及配置事物管理器
事务的四大特征 1.原子性:一个事务中所有对数据库的操作是一个不可分割的操作序列,要么全做要么全不做 2.一致性:数据不会因为事务的执行而遭到破坏 3.隔离性:一个事物的执行,不受其他事务的干扰,即并 ...
- spring 事物管理没起到作用
今天在做项目的时候发现配置的spring 事物管理没起到作用.可是配置又是依据官网配置的,不可能会错.最后发现使mysql的问题 普通情况下,mysql会默认提供多种存储引擎,你能够通过以下的查看: ...
- java陷阱之spring事物管理导致锁无效
模拟锁情况无效 1.创建一个表 SET NAMES utf8mb4; ; DROP TABLE IF EXISTS `demo`; CREATE TABLE `demo` ( `id` ) NOT N ...
- 集成Spring事物管理
什么是事物 事物是访问数据库的一个操作序列,数据库应用系统通过事物集来完成对数据库的存取.事物的正确执行使得数据库从一种状态转换为另一种状态. 事物必须服从ISO/IEC所制定的ACID原则.ACID ...
- SpringAOP和Spring事物管理
Spring AOP : Pointcut表达式: designators-指示器 wildcards-通配符 operators-操作符 wildcards: * -- 匹配任意数量的字符 + -- ...
- Spring事物管理机制简单学习
首先spring并不直接管理事物,而是提供了多种事物管理器,他们将事务管理的职责委托给Hibernate或者JTA等持久化机制所提供的相关平台框架的事务来实现. Spring管理事物的接口是org.s ...
- 【JAVA】Spring 事物管理
在Spring事务管理中通过TransactionProxyFactoryBean配置事务信息,此类通过3个重要接口完成事务的配置及相关操作,分别是PlatformTransactio ...
- Spring事务管理简介
© 版权声明:本文为博主原创文章,转载请注明出处 1.什么是事务 - 事务是指逻辑上的一组操作,这组操作要么全部成功,要么全部失败 2.事务特性(ACID) - 1.原子性(Atomicity):指事 ...
随机推荐
- 使用Wireshark抓取SNMP Trap包
Wireshark SNMP Trap 过滤关键字:snmp && udp.dstport == 162
- User-Agent 列表
<useragentswitcher> <folder description="Internet Explorer"> <useragent des ...
- JS-LINQ
JS中使用LINQ 详细使用方法可找相关资料 文件在这里 引用: <script type="text/javascript" src="@Url.Content( ...
- SVN如何迁徙到Git
由于一直都是采用SVN作为源码管理,转到Git不能从头开始吧~~下面就具体说说如何将SVN已有的项目工程迁徙到Git上面 步骤 (1) 安装Git客户端程序(2) 将SVN上面的工程通过Git克隆到本 ...
- Bootstrap路径导航
@{ Layout = null;}<!DOCTYPE html><html><head> <meta name="viewport&q ...
- php 将一个二维数组中两个相同的value 相同 指定值相加
array(3) { [0]=> array(7) { ["mlid"]=> int(1) ["num"]=> int(1) ["c ...
- Delphi I/O Errors(几百种不同的错误)
The following are the Windows API (and former DOS) IO errors, which are also the IO errors often ret ...
- 使用NEWSEQUENTIALID解决GUID聚集索引问题
原文:使用NEWSEQUENTIALID解决GUID聚集索引问题 UNIQUEIDENTIFIER做主键(Primary Key)是一件很方便的事情,在数据合并等操作中有不可替代的优势 但是由于普通的 ...
- ArcGIS for Desktop入门教程_第七章_使用ArcGIS进行空间分析 - ArcGIS知乎-新一代ArcGIS问答社区
原文:ArcGIS for Desktop入门教程_第七章_使用ArcGIS进行空间分析 - ArcGIS知乎-新一代ArcGIS问答社区 1 使用ArcGIS进行空间分析 1.1 GIS分析基础 G ...
- 微信小程序把玩(三十三)Record API
原文:微信小程序把玩(三十三)Record API 其实这个API也挺奇葩的,录音结束后success不走,complete不走,fail也不走, 不知道是不是因为电脑测试的原因,只能等公测或者等他们 ...