ShardingSphere 提供了两种主要的事务管理方式:
-
本地事务(Local Transaction)
- 每个数据库资源使用自己的本地事务。适用于不涉及跨库事务的简单场景。
- 在 Sharding JDBC 中,默认使用本地事务管理模式。当你的事务操作都在一个单独的数据库内完成时,本地事务足以处理。
-
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
配套使用,事务才会生效。