数据库的事务概述
1.1 事务是什么?
事务首先是一系列操作组成的工作单元,该工作单元内的操作是不可分割的.即所有的事情要么都做,或者要么都不做,这就是事务.
1.2 事务的特性(原子性,隔离性,一致性,持久性)缺一不可.
原子性(Atomicity): 即事务是最小的工作单元,事务内的操作要么全做,要么全不做.
隔离性(Isolation): 并发事务之间没有影响,在一个事务内部的操作对其他事务的执行是不产生影响的,这需要事务的隔离级别来确定隔离性.
一致性(Consistency): 在事务执行之前,数据库的数据处于正常状态,事务处理之后,数据库的数据任然处于正常状态,即数据的完整性没有被破坏.
持久性(Durability): 事务一旦执行成功,那么它对数据库的影响是永久的,不会受外界因素导致数据不一致.
1.3 常见的并发操作数据库问题
在日常开发中,并发操作数据库是很常见的事,然而多个事务的并发执行会导致一系列问题产生.
1) 丢失更新: 两个事务同时更新一行数据,后面的那个事务更新会覆盖前一个事务的更新,从而导致第一个事务更新的数据丢失.
2) 脏读: 一个事务看到另一个事务未提交的更新数据
3)不可重复读: 在同一事务中, 多次读取同一数据却返回不同的结果;也就是其他事务更改了这些数据
4)幻读: 一个事务在执行过程中读取到了另一个事务已经提交的插入数据;即第一个事务开始读取一批数据,但此后另一个事务又插入了新数据并提交;此时第一个事务又读取的这批数据,但是发现多了一条,即好像发生了幻觉一样.
1.4 事务的隔离级别
为了解决事务并发的问题,需要通过数据库的隔离级别来解决,以下是定义的4种数据库的隔离级别:
1.未提交读: 最低的隔离级别.一个事务能够读取到别的事务未提交的更新数据,很不安全,可能出现丢失更新,幻读,脏读,不可重复读等问题.
2.提交读: 一个事务能够读取到别的事务的更新数据,不能看到未提交的更新数据, 解决了丢失更新,脏读问题.
3. 可重复读: 保证同一事务中先后执行的多次查询将返回同一结果,不受其他事务的影响,可能出现丢失更新,脏读,不可重复读,但是解决了幻读.
4. 序列化: 最高隔离级别.不允许事务并发执行,而必须串行执行,最安全,上述问题都不可能出现.
1.5 常见操作我们应该使用什么隔离级别
隔离级别越高,数据库事务并发执行性能越差,能处理的操作越少。因此在实际项目开发中为了考虑并发性能一般使用提交读隔离级别,它能避免丢失更新和脏读,尽管不可重复读和幻读不能避免,但可以在可能出现的场合使用悲观锁或乐观锁来解决这些问题。
1.6事务类型
1) 数据库事务类型有本地事务和分布式事务
1. 本地事务: 就是普通事务,能够保证单台机器上的事务处理.
2. 分布式事务: 涉及两个或多个数据库源的事务,即跨多台同类或异类的数据库事务(由每台数据库的本地事务组成),分布式事务旨在保证这些本地事务的所有操作的特性(事务的特性),使事务可以跨多台数据库.
2) java事务又JDBC事务和JTA事务
1. jdbc事务: 就是数据库事务类型中的本地事务,通过Connection对象来管理
2. jta事务: JTA指的是java事务API(java Transaction API), 是javaEE数据库事务的规范,JTA只提供了事务的管理接口,由应用厂商提供实现,JTA事务还支持分布式事务,比jdbc事务更强大.
3) java EE 事务类型有本地事务和全局事务
1. 本地事务: 即由JDBC编程实现的事务
2. 全局事务: 由应用程序服务器提供,使用JTA事务.
4)其他分类
1. 声明式事务: 通过注解和配置文件指定事务信息
2. 编程式事务: 通过编写代码实现事务.
1.7Spring的事务管理
Spring框架为我们提供了一致标准的事务抽象,因此也就提供了一致的编程式事务管理API还有无侵入式的声明式事务支持.
- 浏览: 11676 次
- 性别:
- 来自: 广州
相关推荐
4. **AOP(面向切面编程)模块**:提供了面向切面的编程实现,允许开发者定义“切面”或者关注点,将业务逻辑与系统服务(如日志、事务管理)解耦。 5. **MVC(Model-View-Controller)模块**:Spring MVC是Spring...
在解压后的"spring-framework-5.3.3"目录中,你可以找到源码、文档、示例等资源,这将有助于深入理解Spring的工作原理,学习如何使用新特性和优化点。开发者可以通过阅读源码和官方文档,了解Spring 5.3.3的具体改进...
文件`spring_3_1`、`spring_3`和`spring_3_2`可能包含了Spring框架关于JdbcTemplate和事务管理的更多示例代码和配置信息,学习这些资源有助于深入理解Spring4中如何有效地利用JdbcTemplate进行事务控制。通过实践,...
这些文档详细解释了如何配置和使用Spring,包括容器配置、bean定义、数据访问、事务管理、Web开发等方面的指导,是学习和解决问题的重要资源。 3. spring-5.3.6-schema.zip:这个文件包含了Spring Framework的XML ...
虽然随着版本的更新,Spring框架的功能和架构有了很大的发展,但1.0版本的基本理念和设计模式至今仍然具有重要的学习价值。 通过深入研究这个压缩包,开发者不仅可以了解Spring Framework的基础原理,还可以对比...
本篇文章将重点围绕“Spring框架的学习--事务”这一主题,深入解析Spring中的事务管理机制。 首先,事务在数据库操作中扮演着至关重要的角色,确保数据的一致性和完整性。事务具有四大特性,通常被称作ACID(原子性...
这些文档包括用户指南、参考手册、API文档以及开发者指南,是学习和使用Spring框架的重要参考资料。开发者可以通过阅读这些文档深入理解Spring框架的工作原理,以及如何有效地使用其各种特性。 **spring-5.3.1-...
对于学习和理解Spring框架的用法、配置以及最佳实践至关重要。通过阅读这些文档,开发者可以了解到Spring的核心概念、模块结构、配置方式以及如何将Spring集成到实际项目中。 2. **libs文件夹**:包含了一系列的jar...
AOP则为应用程序提供了一种模块化的方式,可以将横切关注点(如日志、事务管理)与核心业务逻辑分离。 在Spring 5.3.8版本中,有以下几个关键的更新和改进: 1. **反应式编程支持**:Spring 5引入了对Reactor和...
在事务管理方面,Spring 2.5进一步完善了声明式事务管理,允许开发者通过注解或XML配置来定义事务边界,减少了手动处理事务的复杂性。此外,对JDBC、Hibernate、JPA等多种持久层技术的集成,使Spring成为了数据库...
Spring AOP则提供了声明式事务管理、日志记录、性能监控等功能,使得开发者可以将关注点分离,提高代码的整洁度。 此外,Spring还提供了数据访问层的支持,包括对JDBC、ORM(Object-Relational Mapping)框架如...
另外,AOP模块实现了切面编程,允许我们定义横切关注点,如日志、事务管理等,提高了代码的复用性和模块化。 `spring-framework-5.1.4.RELEASE-schema.zip`包含了Spring的XML配置schema,这些schema定义了XML配置...
Spring Tool Suite(STS)将Eclipse的强大学习曲线和强大的开发工具与Spring的开发工具集结合在一起,提供了一流的Spring支持,包括智能代码补全、配置向导、项目模板、Spring Boot启动器、Spring Roo支持等。...
- **src**:源代码,对于学习和理解Spring的内部工作原理非常有用。 - **docs**:文档,包括API参考、用户指南和开发者指南,帮助开发者更好地使用Spring框架。 - **dist**:预编译的库文件,如jar包,可以被引入到...
通过阅读文档,开发者可以深入了解Spring MVC、数据访问、事务管理、测试等模块的使用方法。 "spring-framework-4.3.18.RELEASE-schema.zip"文件提供了Spring配置文件所使用的XML架构定义。这些架构文件定义了...
AOP则是Spring提供的一种处理横切关注点的方式,比如日志、事务管理等,可以被模块化并独立于业务逻辑。 在数据访问/集成方面,Spring 5.3.2.RELEASE提供了对JDBC、ORM(Object-Relational Mapping)框架如...
总的来说,Spring Framework 5.3.23源码的学习将让你深入了解这个强大框架的内部工作原理,帮助你更好地利用其功能来构建高效、可扩展的企业级应用程序。通过研究源码,你可以学习如何实现DI、AOP,以及Spring如何...
开发者可以通过这些文档快速学习如何使用Spring框架的各种功能,理解其工作原理,解决在开发过程中遇到的问题。 4. **Spring-5.2.15.RELEASE-schema.zip**:这个文件可能包含了Spring框架配置文件的XML Schema定义...
例如,Spring MVC的文档将解释如何创建web应用程序,而AOP(面向切面编程)部分则会介绍如何实现横切关注点,如日志记录和事务管理。 `libs`文件夹则包含了一系列的JAR文件,这些是Spring框架及其依赖库。Spring...
《Spring Boot + Spring Cloud 全面学习指南》 在当今的微服务架构中,Spring Boot 和 Spring Cloud 是两个至关重要的技术。Spring Boot 提供了一种快速构建独立的、生产级别的基于Spring的应用程序的方式,而...