Mam aplikację Spring Boot, która jest obecnie połączona z jedną bazą danych za pomocą JPA. Szczegóły połączenia w pliku 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

Teraz mam nową bazę danych, z którą chciałbym się połączyć, więc moja aplikacja łączy się teraz z 2 bazami danych. Mogę to połączyć za pomocą JDBC, tam będę musiał ręcznie napisać kod połączenia.

Szukałem rozwiązań. Niektóre są w stanie hibernacji z wieloma plikami konfiguracyjnymi. Inni używają JDBC.

Próbowałem poszukać w dokumentacji Spring, czy istnieją przepisy dotyczące definiowania wielu źródeł danych w pliku application.properties, ale nie mogłem nic znaleźć.

Chciałbym wiedzieć, czy istnieje rozwiązanie wykorzystujące tylko JPA. Dziękuję za Twój czas.

5
bob 23 marzec 2020, 17:49

2 odpowiedzi

Najlepsza odpowiedź

Wykonaj poniższe kroki:

  1. Dodaj dodatkową konfigurację źródła danych do swojego application.properties.

  2. Ustaw dialekt SQL na „default” w pliku application.properties na niech Spring automatycznie wykryje różne dialekty SQL każdego źródła danych

  3. Utwórz pakiet Java dla każdego źródła danych z dwoma zagnieżdżonymi pakietami
  4. Utwórz klasę konfiguracji dla pierwszej bazy danych
  5. Utwórz klasę konfiguracji dla drugiej bazy danych
  6. Utwórz jednostkę dla pierwszej bazy danych
  7. Utwórz repozytorium dla pierwszej bazy danych
  8. Utwórz jednostkę dla drugiej bazy danych
  9. Utwórz repozytorium dla drugiej bazy danych

Pełny kod jest dostępny tutaj,

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

Powyższe kroki pochodzą z tych samouczków

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

Mam nadzieję, że to pomoże :)

1
MOnkey 23 marzec 2020, 15:28
create Different DataSource bean in your configuration file. you should able to provide all db related configuration in beans

<pre>
@Bean
public DataSource db1(String url, String dbuser, String password) {
} 


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

</pre>
0
PanBe 23 marzec 2020, 15:14