1. 分库分表与 Spring Data 的 @Table/@ShardingSphere 整合
分库分表场景下,Spring Data 的 @Table 注解与 ShardingSphere 如何整合使用?
- @Table 注解的用途与逻辑表
- ShardingSphere 分片规则的作用
- 逻辑表名与真实表名的映射
在分库分表场景下,Spring Data JPA 实体上的 @Table(name = "order") 声明的是"逻辑表名"(逻辑表),即业务代码中统一使用的表名,而真实物理表是 order_0、order_1、order_2 等分片表。ShardingSphere 负责把对逻辑表的 SQL 改写为对真实物理表的 SQL:它根据配置的分片规则(分片键、分片算法)把逻辑表名替换为实际表名,并路由到对应的数据源。因此 @Table 指向逻辑表,ShardingSphere 通过配置(如 spring.shardingsphere.rules.sharding.tables.order.actual-data-nodes)把逻辑表与物理表关联起来。整合要点:实体用逻辑表名,ShardingSphere 配置分片策略与数据源,Spring Data 负责对象关系映射,二者通过逻辑表名衔接,无需改实体代码。使用 ShardingSphere-JDBC 时,它作为 DataSource 的嵌入式代理,Spring 的 DataSource 指向 ShardingSphere 的数据源即可无缝集成。
本题考察 ShardingSphere 与 Spring Data 的整合边界。核心是"逻辑表 vs 物理表"的映射:@Table 用逻辑表名,ShardingSphere 按分片规则改写路由到物理表。