事务配置
环境准备:
在读写分离的基础上进行事务的配置
引入maven依赖:
以下两种依赖选择一个就可以,如果想要强一致性就引入XA依赖,如果想要最终一致性就引入Base依赖
<!--Sharding-JDBC事务-XA模式(强一致性事务)-->
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>sharding-transaction-xa-core</artifactId>
<version>4.1.1</version>
</dependency>
<!--Sharding-JDBC事务-Seata模式(最终一致性事务)-->
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>sharding-transaction-base-seata-at</artifactId>
<version>4.1.1</version>
</dependency>
在启动类上添加:
@SpringBootApplication(exclude = {JtaAutoConfiguration.class, PageHelperAutoConfiguration.class})
@EnableTransactionManagement
PageHelperAutoConfiguration是后续分页插件使用的
使用:
在service方法上加上注解 @ShardingTransactionType(TransactionType.XA) 和 @Transactional ,两个注解结合使用
import org.apache.shardingsphere.transaction.annotation.ShardingTransactionType;
import org.apache.shardingsphere.transaction.core.TransactionType;
import org.springframework.transaction.annotation.Transactional;
@Override
@ShardingTransactionType(TransactionType.XA)
@Transactional
public void batchInsertOrder() {
for(int i=0;i<30;i++){
OrderEntity entity = new OrderEntity();
entity.setId(i);
entity.setName("q");
entity.setOtherId(21);
orderMapper.insertOrder(entity);
}
}
一般情况下不需要更改配置,但是需要自定义配置的话可以在:项目的resource目录下,新建一个jta.properties文件,在里面可以编写自定义的配置