`

Spring学习--事务简介

 
阅读更多

 数据库的事务概述
    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还有无侵入式的声明式事务支持.

分享到:
评论

相关推荐

    spring-framework-master

    4. **AOP(面向切面编程)模块**:提供了面向切面的编程实现,允许开发者定义“切面”或者关注点,将业务逻辑与系统服务(如日志、事务管理)解耦。 5. **MVC(Model-View-Controller)模块**:Spring MVC是Spring...

    spring-5.3.3-dist.zip

    在解压后的"spring-framework-5.3.3"目录中,你可以找到源码、文档、示例等资源,这将有助于深入理解Spring的工作原理,学习如何使用新特性和优化点。开发者可以通过阅读源码和官方文档,了解Spring 5.3.3的具体改进...

    Spring4--3.jdbcTemplate事务

    文件`spring_3_1`、`spring_3`和`spring_3_2`可能包含了Spring框架关于JdbcTemplate和事务管理的更多示例代码和配置信息,学习这些资源有助于深入理解Spring4中如何有效地利用JdbcTemplate进行事务控制。通过实践,...

    官方原版完整包 spring-framework-5.3.6.RELEASE-dist.zip

    这些文档详细解释了如何配置和使用Spring,包括容器配置、bean定义、数据访问、事务管理、Web开发等方面的指导,是学习和解决问题的重要资源。 3. spring-5.3.6-schema.zip:这个文件包含了Spring Framework的XML ...

    spring-framework-1.0-with-dependencies.zip

    虽然随着版本的更新,Spring框架的功能和架构有了很大的发展,但1.0版本的基本理念和设计模式至今仍然具有重要的学习价值。 通过深入研究这个压缩包,开发者不仅可以了解Spring Framework的基础原理,还可以对比...

    spring框架的学习--事务

    本篇文章将重点围绕“Spring框架的学习--事务”这一主题,深入解析Spring中的事务管理机制。 首先,事务在数据库操作中扮演着至关重要的角色,确保数据的一致性和完整性。事务具有四大特性,通常被称作ACID(原子性...

    官方原版完整包 spring-framework-5.3.1.RELEASE.zip

    这些文档包括用户指南、参考手册、API文档以及开发者指南,是学习和使用Spring框架的重要参考资料。开发者可以通过阅读这些文档深入理解Spring框架的工作原理,以及如何有效地使用其各种特性。 **spring-5.3.1-...

    spring-framework-4.3.30.RELEASE-dist.zip

    对于学习和理解Spring框架的用法、配置以及最佳实践至关重要。通过阅读这些文档,开发者可以了解到Spring的核心概念、模块结构、配置方式以及如何将Spring集成到实际项目中。 2. **libs文件夹**:包含了一系列的jar...

    官方完整包 spring-framework-5.3.8.RELEASE-dist.zip

    AOP则为应用程序提供了一种模块化的方式,可以将横切关注点(如日志、事务管理)与核心业务逻辑分离。 在Spring 5.3.8版本中,有以下几个关键的更新和改进: 1. **反应式编程支持**:Spring 5引入了对Reactor和...

    spring-framework-2.5-rc2-with-dependencies\spring-framework-2.5-rc2\spring-framework-2.5-rc2docs

    在事务管理方面,Spring 2.5进一步完善了声明式事务管理,允许开发者通过注解或XML配置来定义事务边界,减少了手动处理事务的复杂性。此外,对JDBC、Hibernate、JPA等多种持久层技术的集成,使Spring成为了数据库...

    spring-framework-5.0.2.RELEASE官方完整包加官方文档

    Spring AOP则提供了声明式事务管理、日志记录、性能监控等功能,使得开发者可以将关注点分离,提高代码的整洁度。 此外,Spring还提供了数据访问层的支持,包括对JDBC、ORM(Object-Relational Mapping)框架如...

    官方原版源码spring-framework-5.1.4.RELEASE.zip

    另外,AOP模块实现了切面编程,允许我们定义横切关注点,如日志、事务管理等,提高了代码的复用性和模块化。 `spring-framework-5.1.4.RELEASE-schema.zip`包含了Spring的XML配置schema,这些schema定义了XML配置...

    spring-tool-suite-3.9.6.RELEASE-e4.9.0-win32.zip

    Spring Tool Suite(STS)将Eclipse的强大学习曲线和强大的开发工具与Spring的开发工具集结合在一起,提供了一流的Spring支持,包括智能代码补全、配置向导、项目模板、Spring Boot启动器、Spring Roo支持等。...

    spring-framework-4.3.6.RELEASE-dist.zip

    - **src**:源代码,对于学习和理解Spring的内部工作原理非常有用。 - **docs**:文档,包括API参考、用户指南和开发者指南,帮助开发者更好地使用Spring框架。 - **dist**:预编译的库文件,如jar包,可以被引入到...

    官方原版spring-framework-4.3.18.RELEASE.zip

    通过阅读文档,开发者可以深入了解Spring MVC、数据访问、事务管理、测试等模块的使用方法。 "spring-framework-4.3.18.RELEASE-schema.zip"文件提供了Spring配置文件所使用的XML架构定义。这些架构文件定义了...

    官方原版完整包 spring-framework-5.3.2.RELEASE.zip

    AOP则是Spring提供的一种处理横切关注点的方式,比如日志、事务管理等,可以被模块化并独立于业务逻辑。 在数据访问/集成方面,Spring 5.3.2.RELEASE提供了对JDBC、ORM(Object-Relational Mapping)框架如...

    spring-framework-5.3.23 源码

    总的来说,Spring Framework 5.3.23源码的学习将让你深入了解这个强大框架的内部工作原理,帮助你更好地利用其功能来构建高效、可扩展的企业级应用程序。通过研究源码,你可以学习如何实现DI、AOP,以及Spring如何...

    官方完整包 spring-framework-5.2.15.RELEASE-dist.zip

    开发者可以通过这些文档快速学习如何使用Spring框架的各种功能,理解其工作原理,解决在开发过程中遇到的问题。 4. **Spring-5.2.15.RELEASE-schema.zip**:这个文件可能包含了Spring框架配置文件的XML Schema定义...

    spring-framework-4.2.4.RELEASE.7z

    例如,Spring MVC的文档将解释如何创建web应用程序,而AOP(面向切面编程)部分则会介绍如何实现横切关注点,如日志记录和事务管理。 `libs`文件夹则包含了一系列的JAR文件,这些是Spring框架及其依赖库。Spring...

    springcloud-learning-master.zip

    《Spring Boot + Spring Cloud 全面学习指南》 在当今的微服务架构中,Spring Boot 和 Spring Cloud 是两个至关重要的技术。Spring Boot 提供了一种快速构建独立的、生产级别的基于Spring的应用程序的方式,而...

Global site tag (gtag.js) - Google Analytics