Spring事务的基本原理

Spring事务的基本原理

  • 对于纯JDBC操作数据库,想要用到事务,可以按照以下步骤进行:

    1. 获取连接 Connection con = DriverManager.getConnection()

    2. 开启事务con.setAutoCommit(true/false);

    3. 执行CRUD

    4. 提交事务/回滚事务 con.commit() / con.rollback();

    5. 关闭连接 conn.close();

  • 使用Spring的事务管理功能后,我们可以不再写步骤 2 和 4 的代码,而是由Spirng 自动完成。

  • 那么Spring是如何在我们书写的 CRUD 之前和之后开启事务和关闭事务的呢?

  • 解决这个问题,也就可以从整体上理解Spring的事务管理实现原理了。

  • 下面简单地介绍下,注解方式为例子:

    1. 配置文件开启注解驱动,在相关的类和方法上通过注解@Transactional标识。

    2. spring 在启动的时候会去解析生成相关的bean,这时候会查看拥有相关注解的类和方法,并且为这些类和方法生成代理,并根据@Transaction的相关参数进行相关配置注入,这样就在代理中为我们把相关的事务处理掉了(开启正常提交事务,异常回滚事务)。

    3. 真正的数据库层的事务提交和回滚是通过binlog或者redo log实现的。

  • Spring的事务机制

    1. 所有的数据访问技术都有事务处理机制,这些技术提供了API用来开启事务、提交事务来完成数据操作,或者在发生错误的时候回滚数据。

    2. 而Spring的事务机制是用统一的机制来处理不同数据访问技术的事务处理。

    3. Spring的事务机制提供了一个PlatformTransactionManager接口,不同的数据访问技术的事务使用不同的接口实现,如表所示。

      image.png
    4. 在程序中定义事务管理器的代码如下:

    image.png
    1. 声明式事务,Spring支持声明式事务,即使用注解来选择需要使用事务的方法,它使用@Transactional注解在方法上表明该方法需要事务支持。这是一个基于AOP的实现操作。


      image.png

在此处需要特别注意的是,此@Transactional注解来自org.springframework.transaction.annotation包,而不是javax.transaction。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring的事务机制 所有的数据访问技术都有事务处理机制,这些技术提供了API用来开启事务、提交事务来完成数据操...
    咖啡机an阅读 1,027评论 0 0
  • 1. Spring 事务简介 Spring 本身并不实现事务,Spring事务 的本质 还是 底层数据库 对事务的...
    白袜子先生阅读 14,466评论 0 12
  • spring事务管理是指在业务代码在出现异常之后,对之前的操作进行回滚,保证数据库数据的一致性 分为编程式事务管理...
    MicoCube阅读 12,941评论 0 3
  • 一、Spring事务 事务管理概述 Spring事务管理分为编程式事务管理和声明式事务管理两种 编程式事务:允许用...
    任未然阅读 8,521评论 0 5
  • 人生在世,最苦的是什么? 什么是生命不可承受之轻?什么又是生命不可承受之重? 一千个人,也许就有...
    怡晨悦读阅读 4,048评论 0 3