如何在 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 查询,从多个表中获取数据以克服延迟初始化?