ShardingSphere事务

ShardingSphere 提供了两种主要的事务管理方式:

  1. 本地事务(Local Transaction)

    • 每个数据库资源使用自己的本地事务。适用于不涉及跨库事务的简单场景。
    • 在 Sharding JDBC 中,默认使用本地事务管理模式。当你的事务操作都在一个单独的数据库内完成时,本地事务足以处理。
  2. XA 分布式事务

    • 使用分布式事务协议(如 XA)来管理涉及多个数据库资源的事务。
    • 通过引入第三方的分布式事务管理器(如 Atomikos、Narayana 或 Bitronix),ShardingSphere 可以支持全局事务管理。ShardingSphere默认的XA事务管理器为Atomikos。

ShardingSphere支持将普通的数据库连接池,转换为支持XA事务的连接池,对HikariCP, Druid和DBCP2连接池内置支持,无需额外配置。 其它连接池需要用户实现DataSourceMapConverter的SPI接口进行扩展。

SpringBoot使用方式

引入Maven依赖:

XML 复制代码
<dependency>
    <groupId>io.shardingsphere</groupId>
    <artifactId>sharding-transaction-spring</artifactId>
    <version>${sharding-sphere.version}</version>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-aop</artifactId>
    <version>${spring-boot.version}</version>
</dependency>

业务代码

在需要事务的方法或类中添加相关注解即可,例如:

java 复制代码
@ShardingTransactionType(TransactionType.LOCAL)
@Transactional
java 复制代码
@ShardingTransactionType(TransactionType.XA)
@Transactional

注意:@ShardingTransactionType需要同Spring的@Transactional配套使用,事务才会生效。

相关推荐
Dovir多多18 分钟前
渗透测试入门学习——php与mysql数据库连接、使用session完成简单的用户注册、登录
前端·数据库·后端·mysql·安全·html·php
计算机学姐27 分钟前
基于微信小程序的食堂点餐预约管理系统
java·vue.js·spring boot·mysql·微信小程序·小程序·mybatis
二十雨辰32 分钟前
[苍穹外卖]-09Spring Task定时任务
java·数据库·spring
科研小白_d.s33 分钟前
数据库课程设计mysql
数据库·mysql·课程设计
code.song35 分钟前
校园社团|基于springBoot的校园社团信息管理系统设计与实现(附项目源码+论文+数据库)
数据库·spring boot·后端
code.song41 分钟前
医疗报销|基于springBoot的医疗报销系统设计与实现(附项目源码+论文+数据库)
数据库·spring boot·后端
A懿轩A1 小时前
MySQL SQL多表查询语句各种连接
java·开发语言·数据库·sql·mysql·mybatis
网安詹姆斯1 小时前
网络安全(黑客技术)2024年三个月自学计划
网络·数据结构·python·mysql·安全·web安全·github
代码代码快快显灵1 小时前
XML标记语言
xml·java·数据库
源代码:趴菜2 小时前
MySQL函数:数值函数
数据库·mysql