如何在 JPA 中连接多个数据库?

Posted

技术标签:

【中文标题】如何在 JPA 中连接多个数据库?【英文标题】:How to connect multiple databases in JPA? 【发布时间】:2020-07-04 01:17:06 【问题描述】:

我有一个 Spring Boot 应用程序,它当前使用 JPA 连接到单个数据库。其 application.properties 文件中的连接详细信息:

spring.datasource.url=jdbc:oracle:thin:@localhost:1522:orcl
spring.datasource.username=example
spring.datasource.password=example
spring.datasource.driver.class=oracle.jdbc.driver.OracleDriver

现在我想连接一个新数据库,所以我的应用程序现在连接了 2 个数据库。我可以使用 JDBC 连接它,我将不得不手动编写连接代码。

我一直在寻找解决方案。有些处于休眠状态,具有多个配置文件。其他人正在使用 JDBC。

如果有在 application.properties 文件中定义多个数据源的规定,我尝试查看 spring 文档,但找不到任何内容。

我想知道是否存在单独使用 JPA 的解决方案。感谢您的宝贵时间。

【问题讨论】:

你检查过这个baeldung.com/spring-data-jpa-multiple-databases吗? 我看过,但无法访问他的 git repo 以了解整个演示。我在代理后面工作。谢谢。 你也可以看看这个,这个看起来更简单,medium.com/@joeclever/… 工作!!!非常感谢。 【参考方案1】:

在配置文件中创建不同的 DataSource bean。您应该能够在 beans 中提供所有与 db 相关的配置:

@Bean
public DataSource db1(String url, String dbuser, String password) 
 


@Bean
public DataSource db2(String url, String dbuser, String password) 
 

【讨论】:

【参考方案2】:

按照以下步骤操作:

    向您的 应用程序.properties。

    在您的 application.properties 中将 SQL 方言设置为“默认”以 让 Spring 自动检测每个数据源的不同 SQL 方言

    使用两个嵌套包为每个数据源创建一个 Java 包 为第一个数据库创建配置类 为第二个数据库创建配置类 为第一个数据库创建实体 为第一个数据库创建存储库 为第二个数据库创建实体 为第二个数据库创建存储库

这里有完整的代码,

https://github.com/jahe/spring-boot-multiple-datasources

以上步骤取自本教程

https://medium.com/@joeclever/using-multiple-datasources-with-spring-boot-and-spring-data-6430b00c02e7

希望这会有所帮助:)

【讨论】:

以上是关于如何在 JPA 中连接多个数据库?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 JPA 1.0 构建一个 JPQL 查询,从多个表中获取数据以克服延迟初始化?

如何在 Spring JPA 存储库中加入多个表的结果

如何通过 Spring Data JPA 了解底层数据库名称

如何在 Spring Data JPA 中更改数据库连接?

onetomany 单向与使用 jpa 的可连接设置

如何通过使用 JPA + Hibernate 和 Spring-boot 在一个数据库中使用多个模式?