Spring Boot + Spring Data JPA 配置多個 DataSource
| 環境準備 | |
| 1. | 建立多個不同的資料庫儲存空間 | 
| 此例使用 PostgreSQL,在同一個 database (testdb) 下,建立三個 schema:demo_a, demo_b, demo_c 分別在底下建立 table (table_a, table_b, table_c) 並寫入測試資料 準備好資料庫的連線資訊稍後設定:jdbc:postgresql://127.0.0.1:5432/testdb | |
| 2. | 建立 Spring Boot 專案 | 
| 使用 Spring Initializr 建立,並加入必要的依賴: 
 
 將產生的專案引入 IDE (Eclipse) | |
| 開始撰寫 | |
| 1. | 在 application.properties 中設定三組連線資訊 | 
| key 可自訂,但同一組的 prefix 需相同。 
 | |
| 2. | 建立 packages | 
| 不同連線的 entity, repository 不可放在相同的 package 下,可如下圖配置: | |
| 3. | 依照 Spring Data JPA 規範,建立 entity 及 repository 類別 | 
| 建立 table_a 的 entity 及 repository TableADao.java建立 table_b 的 entity 及 repository TableBDao.java建立 table_c 的 entity 及 repository TableCDao.java | |
| 4. | 透過 Java Config 方式自訂 DataSource,並為每個 DataSource 分別建立各自的 EntityManagerFactory, TransactionManager。 | 
| AConfig.java 
 BConfig.java CConfig.java  | |
| 5. | 建立 Service 類別以利測試 | 
| AService.java 
 BService.java CService.java  | |
| 6. | 進行測試 | 
| 利用 CommandLineRunner (覆寫  執行結果: | |
| 額外加碼 | |
| 以下說明當客製實作 Spring JPA Repositories 時,如何使用多個連線設定。 | |
| 1. | 依照 Spring Data JPA 的規範,擴增 TableADao.java,並建立客製實作類別 TableADaoImpl.java | 
| 改寫 TableADao.java,增加 queryAll() 方法 新增 TableADaoImpl.java,實作 queryAll() 
 TableBDao.java TableBDaoImpl.java TableCDao.java TableCDaoImpl.java  | |
| 2. | 改寫 Service 類別以利測試 | 
| 在 AService.java, BService.java 以及 CService.java 各自增加 queryAll() 方法,並呼叫客製自訂的 repository 方法:queryAll() 
 | |
| 3. | 改寫 MultidsApplication.java,修改測試流程 | 
| 在呼叫   | |
| 4. | 執行並查看測試結果 | 
| 
 | |
| 參考文章 | 














 
						 
								 
								 
								 
								 
								 
								 
								 
								 
								 
								 
								 
								