Как динамически переключать базу данных во время выполнения с Spring Data JPA ORM - PullRequest
2 голосов
/ 11 июня 2019

Я хочу создать приложение с Java, Spring и Spring JPA с несколькими базами данных во время выполнения.

На самом деле я создаю мультитенантное приложение со следующим потоком:

1- одноПриложение может быть php: с веб-сайта пользователь создаст учетную запись, система запустит процесс и создаст базу данных и соответствующую конфигурацию.

2 - Теперь будет загружено основное приложение (Java + Spring JPA, Spring REST), запуститеуказание на эту вновь созданную базу данных, которая содержит данные о пользователях и других материалах, может основываться на идентификаторе клиента или каком-либо другом флаге указания.

Далее планируем добавить 3-е очко;3- oAuth2 также безопасность для отдыха.поэтому конфигурация должна быть соответствующей.

Теперь вопрос в том, как этого добиться в приложении Spring Data JPA и переключить конфигурацию базы данных во время выполнения?

1 Ответ

0 голосов
/ 11 июня 2019

Вы можете настроить несколько источников данных в Spring заранее и разделить связанные репозитории в разных структурах пакетов (на самом деле это не коммутатор, а доступ к нескольким источникам данных из одного и того же загрузочного приложения Spring)

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();
  }

.. создать менеджер транзакций и фабрику управления сущностями

Наконец, получить доступ крепозитории, подключающиеся к разным базам данных.

См. полный пример здесь

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