JPA с несколькими базами данных и application.yml - PullRequest
0 голосов
/ 27 августа 2018

Моему приложению (spring-boot) нужен доступ к нескольким базам данных.По какой-то причине я не могу найти пример с использованием application.yml

Этот пример: http://smasue.github.io/spring-yml-datasources -> application.yml, но не jpa

этот пример: https://www.baeldung.com/spring-data-jpa-multiple-databases -> jpa, но не application.yml

Итак, я создал очень простой проект на основе этого gs: https://spring.io/guides/gs/accessing-data-jpa/

Мой простой пример можно найти здесь: https://github.com/Tyvain/JpaMultipleDatabaseAndApplicationYml

    spring:
      datasource:
        db-1:
          url: jdbc:postgresql://10.10.100.100:5432/db1
          username: db1
          password: db1
          driver-class-name: org.postgresql.Driver
        db-2:
          url: jdbc:postgresql://10.10.100.100:5432/db2
          username: db2
          password: db2
          driver-class-name: org.postgresql.Driver

Отсюда я не уверен, как повлиять на мои репозитории для каждой базы данных.Этот пример https://www.baeldung.com/spring-data-jpa-multiple-databases неясен, поскольку он основан на свойствах ... и я не уверен, как адаптировать весь код

@PropertySource({ "classpath:persistence-multiple-db.properties" })
[...]
   properties.put("hibernate.hbm2ddl.auto",
          env.getProperty("hibernate.hbm2ddl.auto"));
        properties.put("hibernate.dialect",
          env.getProperty("hibernate.dialect"));

Как бы вы назначили каждое репо (CustomerRepositoryDB1 и CustomerRepositoryDB2) ихбаза данных?

1 Ответ

0 голосов
/ 28 августа 2018

Свойства и yaml - два абсолютно равных средства конфигурации.Формат только немного отличается.

Вы можете просто заменить foo.properties на foo.yml и

com.foobar.var1=value
com.foobar.var2=value2

просто станет

com.foobar:
    var1: value
    var2: value2

Плюс есть официальныйSpring Data Repository на Github полон примеров.Существует даже один с двумя источниками данных, полностью сконфигурированными в коде, без необходимости yaml или свойств:

https://github.com/spring-projects/spring-data-examples/tree/master/jpa/multiple-datasources

В Application.java они исключают классы AutoConfig и затем в каждом пакете (Заказать, Customer), у них есть класс Config, конфигурирующий источник данных.Тогда нет необходимости устанавливать источник данных в самом репозитории, поскольку это обрабатывается сканированием пакетов с помощью:

factoryBean.setPackagesToScan(OrderConfig.class.getPackage().getName());

в конфигурации.Повторим: это источник данных для Java-пакета , аннотации к репозиторию не нужны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...