1.什么是事务
事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起,并用形如begin transaction和end transaction语句(或函数调用)来界定。事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。
例如:在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序。
2.事务的特性
事务是恢复和并发控制的基本单位。
事务应该具有4个属性:原子性、一致性、隔离性、持续性。这四个属性通常称为ACID特性。
原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。
一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
持久性(durability)。持续性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。
3.Spring中事务的传播行为
PROPAGATION_REQUIRED: 如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。这是最常见的选择。
PROPAGATION_SUPPORTS: 支持当前事务,如果当前没有事务,就以非事务方式执行。
PROPAGATION_MANDATORY:使用当前的事务,如果当前没有事务,就抛出异常。
PROPAGATION_REQUIRES_NEW:新建事务,如果当前存在事务,把当前事务挂起。
PROPAGATION_NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
PROPAGATION_NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。
PROPAGATION_NESTED:如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与PROPAGATION_REQUIRED类似的操作。
4.Spring中的事务隔离级别
ISOLATION_DEFAULT 默认隔离级别
ISOLATION_READ_UNCOMMITTED 最低隔离级别。允许读事务未提交的数据,会产生脏读、不可重复读和幻象读。
ISOLATION_READ_COMMITTED 保证一个事务修改的数据提交后才能被另外一个事务读取。另外一个事务不能读取该事务未提交的数据。这种事务隔离级别可以避免脏读出现,但是可能会出现不可重复读和幻像读。
ISOLATION_REPEATABLE_READ 这种事务隔离级别可以防止脏读,不可重复读。但是可能出现幻像读。它除了保证一个事务不能读取另一个事务未提交的数据外,还保证了避免不可重复读。
ISOLATION_SERIALIZABLE 这是花费最高代价但是最可靠的事务隔离级别。事务被处理为顺序执行。除了防止脏读,不可重复读外,还避免了幻像读。
分享到:
相关推荐
### 数据库事务总结 #### 一、事务的基本概念与特性 **事务**是数据库系统中的一个逻辑工作单元,它由一系列的操作组成,这些操作要么都完成,要么都不完成,以此来保证数据的一致性和完整性。 #### 二、事务的...
本篇文章将深入探讨事务的基础知识,包括事务的概念、特性、类型以及在实际应用中的管理。 首先,我们要理解事务的基本定义。事务是一个逻辑工作单元,它包含了一组数据库操作,这些操作要么全部执行,要么全部不...
Java知识总结: Java是一种广泛使用的面向对象的编程语言,以其跨平台、安全性高和可移植性强的特点而闻名。Java的核心特性包括封装、继承、多态和抽象,这些构成了面向对象编程的基础。Java虚拟机(JVM)使得Java...
### Oracle基础知识总结初学者必备 Oracle数据库作为一款广泛使用的数据库管理系统,在企业和开发领域扮演着重要的角色。对于初学者而言,掌握其基础知识是非常必要的。本文将根据提供的内容进行深入解析,并结合...
以下是对MySQL入门基础知识的详细总结: 一、MySQL安装与配置 1. 安装:在Windows、Linux或Mac OS上,可以通过官方网站下载相应平台的安装包,按照向导进行安装。 2. 配置:安装完成后,需要配置MySQL服务器,包括...
总结来说,C#中的事务处理涉及到如何在单个数据库和分布式环境中确保数据的一致性。理解事务的基本原则,掌握C#中的事务管理工具和策略,以及熟悉处理分布式事务和异常情况的方法,对于任何从事数据库驱动的C#开发...
本文将深入探讨MySQL的基础知识,包括安装、数据类型、表的创建、查询语句、索引以及事务处理等核心概念。 1. **安装与配置** MySQL的安装过程通常包括下载适合操作系统的安装包,按照向导进行安装,然后配置...
总的来说,税务师事务所的实习经验对于个人在财税领域的专业知识积累和职业技能提升具有深远影响。通过实习,个人不仅能够提升专业素养,还能培养出适应行业需求的服务意识和与时俱进的学习态度,为未来的职业生涯...
会计事务所在年度工作总结报告中,主要体现了以下几个重要的知识点: 1. **审计工作原则**:会计事务所遵循独立、客观、公正的审计原则,这是确保审计结果真实、可信的基础。事务所在执行审计任务时,严格遵守国家...
MySQL知识总结思维导图,压缩包内包含MySQL数据库基础、MySQL库的操作、MySQL表的操作(DDL)、MySQL数据类型、MySQL表的约束、MySQL基本查询(DML)、MySQL内置函数、MySQL复合查询、MySQL内外连接、MySQL索引特性...
### 分布式事务解决方案总结 #### 一、背景与概念 在传统的单体应用中,事务处理相对简单,因为它们通常发生在同一个数据库实例上。然而,随着微服务架构的兴起,一个应用程序可能会由多个独立部署的服务组成,...
### 律师事务所年终总结知识点概览 #### 一、党建工作与律师队伍建设 1. **党建工作的重要性**: - 律师事务所在市司法局及市律师协会的领导下,深入学习实践科学发展观,落实中央工作会议精神。 - 根据省厅党委...
很抱歉,但根据您提供的信息,我无法生成...这些信息无法用来分析或总结相关知识点。如果有详细的文档内容,我将很乐意帮助您整理和总结出知识点。请提供更加具体和详实的内容,以便我能够为您提供准确的知识点信息。
正如“律师事务所工作总结”所述,严格管理能够维护律师行业的职业道德和执业纪律,确保无违规执业现象,增强律师事务所的信誉。在实践中,增设行政管理职位并聘请有经验的人员专抓内部管理,是确保律师事务所高效...
【税务事务所工作总结】 税务事务所的工作总结是一个展示个人及团队在过去一年中工作成就、问题反思和未来规划的重要文档。以下是一些撰写税务事务所年度总结报告的关键要点: 1. **工作内容概述**:首先,要简洁...
【会计事务所年度工作总结】 会计事务所在过去的一年中,经历了多个项目的审计和咨询工作,新入职的员工在实践中不断成长,对会计事务所行业有了更深入的理解。以下是该年度工作总结的主要内容: 1. **责任心增强...
【事务所实习总结】 在事务所的实习经历中,我作为一名会计专业的学生,对审计工作有了深入的理解。实习不仅巩固了我的专业知识,也让我体验到审计工作的实际操作,从而认识到理论与实践之间的差异。 实习初期,我...
### Spring事务管理详解 在Java应用开发中,事务管理是一个重要的环节,特别是在处理数据库操作时。Spring框架提供了强大的事务管理机制,使得开发者...希望本文能帮助您更好地理解和运用Spring事务管理的相关知识。
不过,我可以提供一个关于“2019年会计师事务所年度总结”的概要框架,基于一般的会计师事务所年度总结应包含的主题和知识点。 会计师事务所的年度总结通常涉及以下几个关键部分: 1. 财务审计与报告:这是会计师...