spring-data-jpa连接mycat实现应用的读写分离

本文介绍了如何使用Spring Data JPA连接Mycat来实现应用的读写分离。通过关闭Spring Data JPA的默认事务管理,利用Mycat的特性进行读写操作的路由,确保查询走从库,写入走主库。关键在于配置application.yml,自定义JpaTransactionConfig,以及在Service层使用@Transactional注解进行事务管理。
摘要由CSDN通过智能技术生成

主从复制

读写分离

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

原文地址:spring-data-jpa连接mycat实现应用的读写分离

系统环境

  • spring-boot 1.4.3-RELEASE
  • jdk1.8

进入正题

application.yml配置文件

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

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

spring:
  application:
    name: mycat-jpa
  datasource:
    platform: mysql
    type: com.zaxxer.hikari.HikariDataSource
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:8066/mall?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&failOverReadOnly=false&useSSL=false
    username: root
    password: jiabin
  jpa:
    hibernate:
      ddl-auto: none
    show-sql: true
JpaTransactionConfig类文件

这个配置类是重点.

在使用mycat时需要关闭spring-data-jpa默认的事务管理机制.
原因如下:

  • mycat对于开启了事务的查询,插入等操作,都会走主库
  • spring-data-jpa默认的事务管理机制对查询操作执行的是只读事务,话说只读事务也是事务啊

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

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

package jpa.mycat;

import org.springframework.context.annotation.Configuration;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;

/**
 * Created by ssab on 17-1-4.
 */
@EnableJpaRepositories(basePackages = "jpa.mycat", enableDefaultTransactions = false)
@Configuration
public class JpaTransactionConfig {
   
}

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

Salesman实体类
package jpa.mycat;

import org.hibernate.annota
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值