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配套使用,事务才会生效。

相关推荐
heart000_11 小时前
MySQL事务与锁机制详解:确保数据一致性的关键【MySQL系列】
数据库·mysql
一眼青苔1 小时前
MySQL 如何判断某个表中是否存在某个字段
数据库·mysql
西柚小萌新2 小时前
【大模型:知识图谱】--3.py2neo连接图数据库neo4j
数据库·知识图谱·neo4j
wangfenglei1234562 小时前
mybatis打印完整的SQL,p6spy
数据库·sql·mybatis
__风__2 小时前
PostgreSQL ERROR: out of shared memory处理
数据库·postgresql
占星安啦2 小时前
一个html实现数据库自定义查询
java·前端·javascript·数据库·动态查询
天空之城夢主2 小时前
MySQL 全量、增量备份与恢复
数据库·mysql·oracle
Elastic 中国社区官方博客2 小时前
连接关键点:使用 ES|QL 联接实现更丰富的可观测性洞察
大数据·数据库·sql·elasticsearch·搜索引擎·全文检索
元闰子2 小时前
AI Agent需要什么样的数据库?
数据库·人工智能·后端
什么都想学的阿超2 小时前
【PostgreSQL 02】PostgreSQL数据类型革命:JSON、数组与地理信息让你的应用飞起来
数据库·postgresql·json