多个数据库使用相同的域模型和 Spring Boot 和 Spring Data JPA
Posted
技术标签:
【中文标题】多个数据库使用相同的域模型和 Spring Boot 和 Spring Data JPA【英文标题】:Multiple databases using same domain models with Spring Boot and Spring Data JPA 【发布时间】:2017-12-30 13:29:32 【问题描述】:在我的 Spring Boot 项目中,我正在编写一个服务来将 selected 数据从一个环境导入到另一个环境。 (例如,将一条记录复制到 dev 到 prod) 至于我read,要配置多个数据源,我需要创建不同的 JPA 存储库和域模型。但是由于每个数据源中的 db 结构都是相同的,所以它只是代码重复。使用 Spring Data JPA 将数据从一个数据库复制到另一个数据库是否有更好的做法?
【问题讨论】:
数据库或 ETL 工具提供的本机复制不是更好的选择吗? 我不这么认为,因为最终用户会选择要导入的记录。 请在问题本身中添加此类限制条件,否则,它仍然过于宽泛、不清楚且易于解释。 应该可以使用 SpringAbstractRoutingDataSource
从一个数据库 (DataSource
) 读取并使用同一存储库写入另一个数据库。尝试使用 Spring Data JPA 配置链接的 Spring 教程。
【参考方案1】:
在不增加多个数据源的复杂性的情况下解决此问题的一种方法是创建 2 个不同的 spring 配置文件(每个数据源一个),然后启动应用程序的 2 个实例,每个 spring.profile 一个。从一个读取数据,然后将数据传递给第二个(通过 REST 或其他方式)以插入它。如果您需要在其他地方访问,这还会为每个数据源创建可重用的服务。
有多种方法可以使用多数据源,但我总是发现它们对于我需要的东西来说过于复杂。
【讨论】:
以上是关于多个数据库使用相同的域模型和 Spring Boot 和 Spring Data JPA的主要内容,如果未能解决你的问题,请参考以下文章
实体框架 - 代码优先:使用相同类型的多个子/可选属性进行映射