簡體   English   中英

如何使用Spring Data JPA ORM在運行時動態切換數據庫

[英]How to switch database dynamically at runtime with Spring Data JPA ORM

我想在運行時使用Java,Spring和Spring JPA創建具有多個數據庫的應用程序。

實際上,我正在使用以下流程創建多租戶應用程序:

1-一個應用程序可能是php:從網站用戶將創建帳戶,系統將運行該過程並創建數據庫和相應的配置。

2-現在將加載主要應用程序(Java + Spring JPA,Spring REST),開始指向包含用戶和其他填充數據的新創建的數據庫,該數據庫可能基於租戶ID或其他指向標記。

進一步計划增加第三點; 3- oAuth2也具有安全性。 因此配置應相應。

現在的問題是,如何在Spring Data JPA應用程序中實現此目標並在運行時切換數據庫配置?

您可以在Spring中預先配置多個數據源,並在不同的程序包結構中隔離關聯的存儲庫(不是真正的交換機,而是從同一個Spring Boot應用程序訪問多個數據源)

spring.datasource.url = ...
....


second.datasource.url=
second.datasource.username=
second.datasource.password=
second.datasource.driver-class-name=

創建一個新的配置以從隔離的軟件包中掃描存儲庫,然后加載配置屬性以構建第二個數據源。

@EnableJpaRepositories(
  basePackages = { "<package containing repo from second database>" }
)
public class SecondDBConfig {
@Bean(name = "secondDataSource")
  @ConfigurationProperties(prefix = "second.datasource")
  public DataSource dataSource() {
    return DataSourceBuilder.create().build();
  }

..創建交易管理器和實體管理工廠

最后,訪問連接到不同數據庫的存儲庫。

在這里查看完整的示例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM