Spring 集成事务管理详解:银行转账示例

1. 前言

在 Java EE 开发中,数据库事务是保证数据一致性的重要机制。Spring 提供了强大的事务管理功能,允许开发者通过 声明式事务(基于注解)编程式事务(手动管理) 来控制事务。

本文介绍如何在 原始 Spring 框架(非 Spring Boot)中集成事务管理,包括 配置步骤代码示例

本代码示例版本要求:

  • Java 17 +
  • Spring 6 +

2. 事务管理的基本概念

2.1 什么是事务?

事务(Transaction)是一组数据库操作的集合,要么全部成功,要么全部失败。事务的四大特性(ACID):

  • Atomicity(原子性):事务中的操作要么全部执行,要么全部回滚
  • Consistency(一致性):事务执行前后,数据状态保持一致
  • Isolation(隔离性):不同事务之间相互独立,避免并发问题
  • Durability(持久性):事务提交后,对数据库的修改是永久的

3. Spring 集成事务管理

Spring 通过 PlatformTransactionManager 进行事务管理,支持以下几种事务管理器:

  • DataSourceTransactionManager(JDBC 事务管理,适用于 MySQL、PostgreSQL 等)
  • JpaTransactionManager(JPA 事务管理,适用于 Hibernate、Spring Data JPA)
  • HibernateTransactionManager(Hibernate 事务管理)

本例中,我们使用 JDBC + MyBatis,配置 DataSourceTransactionManager


4. 事务管理实例(基于 MyBatis)

4.1 引入依赖

确保 pom.xml 中包含 Spring、MyBatis 、数据库驱动以及版本需要对应:


<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0modelVersion>

    <groupId>com.alivinfergroupId>
    <artifactId>day09-spring-transactional-demoartifactId>
    <version>1.0-SNAPSHOTversion>

    <properties>
        <maven.compiler.source>21maven.compiler.source>
        <maven.compiler.target>21maven.compiler.target>
        <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
    properties>

    <dependencies>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-contextartifactId>
            <version>6.1.14version>
        dependency>

        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
            <version>8.0.33version>
        dependency>

        <dependency>
            <groupId>org.mybatisgroupId>
            <artifactId>mybatis-springartifactId>
            <version>3.0.4version>
        dependency>

        <dependency>
            <groupId>com.alibabagroupId>
            <artifactId>druidartifactId>
            <version>1.2.24version><

你可能感兴趣的:(后端,spring,java,后端,事务管理)