![](/img/trans.png)
[英]In Spring Data Jpa, how can I run an SQL union query from two different datasources...?
[英]How can I configure JPA repositories for different DataSources in SpringBoot?
我使用彈簧啟動應用程序。 我通過 JDBC 數據源和存儲庫從數據庫中選擇數據。 一些 JDBC 查詢和一些存儲庫查詢。 我的數據庫配置 RAC 並有 2 個實例。 我通過129.0.0.2
連接到數據庫,但此 URL 在129.0.0.3(1 instance) and 129.0.0.4(2instance)
之間平衡。 所有查詢都使用129.0.0.2
執行,但有些查詢我只需要在一個實例上執行。 我創建了 3 個數據源:
@Bean(name = "primary")
@Primary
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource primaryDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "second")
@ConfigurationProperties(prefix = "spring.secondDatasource")
public DataSource secondaryDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "three")
@ConfigurationProperties(prefix = "spring.threeDatasource")
public DataSource threeDataSource() {
return DataSourceBuilder.create().build();
}
並在 application.properties 中配置它們。 然后我可以寫
@Qualifier("primary")DataSource dataSource
或者
@Qualifier("second")DataSource dataSource
但是當我執行存儲庫查詢時會使用什么 DataSource 呢?
創建兩個配置類,如下所示:
@Configuration
@EnableJpaRepositories(basePackages = "your.package.repositories.datasource1",
entityManagerFactoryRef = entityManagerFactory1)
class DataSource1Configuration {
@Bean
public EntityManagerFactory entityManagerFactory1(@Qualifier("primary") DataSource primary) {
// … create entity manager factory based on primary source
}
}
第二個配置類顯然是相似的,但適合使用輔助數據源
順便說一句,從 Java 8 開始,在同一個類上也可能有兩個類型的注釋(在這種情況下是兩個@EnableJpaRepositories
)。 所以它也可以使用一個配置類,但使用兩個@EnableJpaRepositories
注釋。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.