【发布时间】:2020-10-26 22:15:47
【问题描述】:
我有很多(比如 60 多个)具有相同架构和相似名称的表:
log_2020_07_01
log_2020_07_02
... and so on.
它们具有相同的列:id, site, size。每个表包含大约 200 万行。
我读过Hibernate and tables with same data/columns but with different table names,它建议单独使用hibernate。我希望七年后我们可以用 JPA 做一些新的事情。
在JPA中,是否可以只写一个实体类,让代码来处理使用哪个表?
例如,
for(int i=0;i<60;i++) {
// read from the i-th table.
}
【问题讨论】:
-
特别是对此的评论:我希望七年后我们可以用 JPA 做一些新的事情。为什么有人会努力处理所有可能的不良设计?所以我不会屏住呼吸等待这个解决方案。有一个真正的解决方法,但它要求有人停止生成这些表,并且有人愿意做一些数据库表迁移。
-
@pirho 水平数据库分片不是一个糟糕的设计。
-
我是不是这么说的:) 你在解决与水平分片相关的问题吗?这些表是否位于多个数据库服务器中?好吧,我想实施它的方法有好有坏,没有严格的标准。很少有链接here。一眼看去,这些扩展并没有流行起来,当然也不使用表名来散列服务器周围的行。 Ex. of using Hibernate shards。猜猜也不允许不同的表名
-
@pirho 我添加了一个拦截器来根据需要动态更改表名。将尝试您提供的分片链接。
-
希望你设法让它工作。如果你这样做了,请提供你的解决方案作为答案,期待看到它。
标签: java mysql database spring-boot jpa