00:00
接下来我们再对数的一致性呢进行一个测试,好,我们还是打开idea。然后呢,在刚才我们的测试用例当中,我们再添加第二个测试方法,我们先不添加事物哈,写一个测试test测试事物,那么首先呢,我们创建一个新的用户。好。好,我们写一个随便写个人名啊。然后呢,我们做一个插入的操作。好,这样的话,数据我们插进去了,然后紧接着呢,我们再做一个查询的操作。
01:07
Select吧,那么这个就是查询所有的数据。好,接下来呢,我们来做一个测试。我们主要来看一下circle的输出。好,接下来呢,我们来看。我们直接点这个test就行哈,可以直接看到这些circle,那么前面呢,我们会有一个logic circle logic circle呢,我们会发现呢,一样它会向我们的逻辑表当中插入数据,那么实际它插入到了哪个数据源的数据库表当中呢?它是像master这个数据源,也就是主库插入了这样的一个真实的数据,我们来看一下数据库当中的一个具体的数据。
02:10
那数据被插进去了,然后从库呢,也得到了一个同步。好,接下来呢,我们再来看数据查询,那么首先呢,查询也有一个逻辑的一个circle,那么它会从我们的逻辑表t user当中进行数据的查询,紧接着呢,又有一个真实的色扣,那么这个真实的色Q呢,它会从我们的默认的SLAVE1,也就是第一台器当中进行一个数据查询。所以呢,你会发现写数据呢,它会被真实的写到主服器当中,而查数据呢,它会从器当中呢进行查询,那这个呢,是我们没有添加事物的情况,那接下来呢,我们在。测试用力的上方呢,添加一个transactional注解,那这个呢,就是我们的事物注解了,实际上就开启了事物。
03:12
好,我们再对开启事物之后的测试用例呢进行一个测试。好,我们来看一下。我们的circle。在这块这个呢,我们会发现。它依然是向逻辑表t user当中插入记录,然后actual,我们会发现它依然是向主服务器进行一个数据的插入,然后接下来查询,这个是它的逻辑磁口,然后后面这个呢是它的。实际那我们会发现呢,在这个测试当中和之前就有所不同了。
04:05
他的查询的请求呢,也发送给了我们的主服器。所以呢,这个就是这样的一个结论,为了保证主从数据库间的事物的一致性,避免服的分布式事物,那么she spare JD bc的主从模型当中,事物中的数据读写均用主库啊,所以刚才我们会发现,只要我们在测试用例当中添加了这样的一个transactional注解的话,那么就意味着这个方法当中的。增加和查询被封装到了一个事物当中,那么如果这个方法当中的多个数据与操作被封装到了一个事物当中,那么我们说他们均会向主库发起查询和插入的请求。好,那么这里面还有一个细节。
05:07
我们来看一下日志啊。在。整个日志的最后呢,它有一个回,也就是说回滚,那我们看下数据。数据库当中呢,其实这是我们第一次测试的时候插入的数据。那么我们第二次测试的时候的数据呢,并没有被成功的插入,因为它回滚了,为什么呢?因为在接环境下,Transactional注解默认的情况下呢,就会对事物进行回滚,这是测试嘛啊,所以呢,他顺便呢就把事物回滚啊,即使在没有加注解low bag的情况下呢,事物也会回滚。
我来说两句