前天陈某知识星球中的朋友咨询过我一个问题,大致内容如下:
这位读者什么意思呢?简单的总结下:在Sharding-JDBC中明明只是简单的使用@Transactional这个本地事务注解,为什么在跨库插入数据时候却能够同时回滚?
我们知道单数据节点的情况下保持事务是非常简单的,只需要使用本地事务即可轻松解决,比如常用的注解:@Transactional
但是在分库后将会存在跨库的事务,此时本地事务还能保证事务吗?
这篇文章就以球友的提问来聊一下Sharding-JDBC中的本地事务
本地事务
Sharding-JDBC中的本地事务可能会让大家有一个误解,还是以商品表为例:将商品表根据商品ID进行水平分库,分为两个库,如下:
分库的配置这里就不贴了,详情看源码
此时向其中批量插入数据,伪代码如下:
@Transactional
public int insertBatch(){
for(int i=0;i<10;i++){
insert(product);
.......