Sharding-JDBC

Sharding-JDBC定位为轻量级Java框架,在Java的JDBC层提供的额外服务。它使用客户端直连数据库,以jar包形式
提供服务,无需额外部署和依赖,可理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架。
使用Sharding-JDBC可以在程序中轻松的实现数据库读写分离。

  • 适用于任何基于JDBC的ORM框架,如∶JPA, Hibernate,Mybatis, Spring JDBC Template或直接使用JDBC。
  • 支持任何第三方的数据库连接池,如:DBCP,C3P0,BoneCP, Druid, HikariCP等。
  • 支持任意实现JDBC规范的数据库。目前支持MySQL,Oracle,sQLServer,PostgresQL以及任何遵循SQL92标准的数据库。

基本使用

前提:已经准备好主从复制结构的数据库
在项目中加入Sharding-JDBC实现读写分离步骤:

  1. 导入maven坐标
    <dependency>
        <groupId>org.apache.shardingsphere</groupId>
        <artifactId>sharding-jdbc-spring-boot-starter
        </artifactId><version>4.0.0-RC1</version>
    </ dependency>
    
  2. 在配置文件中配置读写分离规则
  3. 在配置文件中配置 允许bean定义覆盖 配置项

读写分离规则样例:

image-20230120123729234

可能出现的问题:
JDBC、Druid框架都要创建数据源对象,这时候就会发生冲突,需要在配置文件中配置允许bean定义覆盖配置项:Spring.main.allow-bean-definition-overriding: true