spring jpa mysql集群_Spring Boot系列之十四 JPA 连接mycat

本文介绍使用spring-data-jpa连接mycat实现应用的读写分离.

系统环境spring-boot 1.4.3-RELEASE

jdk1.8

进入正题application.yml配置文件

这个很传统,指定mysql以及datasource就可以.

特别说一句:mycat跟应用是相互独立的,mycat后边的mysql集群对于应用来说就相当于一台单独的mysql server,所以,不要纠结与应用该用什么数据库连接工具

19f60000ad48f235643a.jpg

JpaTransactionConfig类文件

这个配置类是重点.

在使用mycat时需要关闭spring-data-jpa默认的事务管理机制. 原因如下:mycat对于开启了事务的查询,插入等操作,都会走主库

spring-data-jpa默认的事务管理机制对查询操作执行的是`只读事务`,话说`只读事务`也是事务啊

鉴于以上两个原因.我们就得使用`enableDefaultTransactions = false`来关闭spring-data-jpa默认的事务管理机制.

好吧,既然我们关闭了默认的事务管理机制,我们就得使用`@Transactional`来开启声明式事务处理.哈哈,也就是说,我们需要用添加`@Transactional`注解的硬编码方式来实现事务管理.见`SalesmanService`

19f60000ae70e0d4bcfb.jpg

弄懂了这两个配置,剩下的就简单了.Salesman实体类

19ff00009ced8127a64e.jpgSalesmanRepository

19fd0000be88d0eae436.jpgSalesmanService

19fe0000ab08178a7298.jpg

测试SalesmanServiceTest

19f60000af6ba2f08282.jpg

运行testFindAll方法,查看mycat日志

19f60000b04ee29e4adc.jpg

注意看图中红框内的内容

好吧我们确定是走的从库.

19ff00009eaaa348c262.jpg

从图中红框内的内容我们发现走的是主库.

总结

使用spring-data-jpa连接mycat的重点就在于关闭spring-data-jpa的默认事务管理机制并使用@Transactional注解来进行声明式事务管理.

注意这点就可以了.

代码

https://github.com/sunshineasbefore/mycat

支持请点赞,不喜请喷.

每天一点点,成长多一点.


版权声明:本文为weixin_35181426原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。