Как я могу изменить базу данных сеанса MySQL? - PullRequest
1 голос
/ 31 марта 2019

Я пытаюсь изменить базу данных по умолчанию при запуске программы. Во-первых, я начинаю с базы данных по умолчанию (main_database) и после выбора некоторых таблиц хочу перейти на другую таблицу (second_database).

Я использую этот код, но не работает:

String qlQuery = "USE second_database;";
Query query = entityManager.createNativeQuery(qlQuery);
query.getResultList();

Server server = serverService.findById(1);

но похоже, что getResultList предназначен только для Selects.

Как я могу решить эту проблему?

Я использую Spring Boot и JPA.

Спасибо!

РЕШЕНИЕ:

Аренда (для Spring Boot и JPA): https://javadeveloperzone.com/spring-boot/spring-boot-jpa-multi-tenancy-example/

1 Ответ

1 голос
/ 31 марта 2019

Я могу придумать два варианта, но все зависит от ваших вариантов использования:

1. Создание живых представлений в базе данных default_

Вы работаете с 31 дочерней базой данных, но нужен ли вам доступ ко всем их данным? Если на этот вопрос нет ответа (например, вы ожидаете, что в будущем потребуется доступ к произвольной таблице из одной из этих 31 баз данных), то в режиме реального времени не нужно.

Если установлено, что все данные, которые вам когда-либо понадобятся для вашего приложения, - из БД 1 - таблицы A и B; из DB2 - таблица C; из DB3 - таблицы D и E; и так далее - это может быть хорошим подходом для создания представлений. Вам также следует учитывать размер данных таблицы и выполняемые операции (например, только чтение или запись?)

2. Настройка Hibernate для мультитенюса:

Вы можете настроить hibernate для выполнения запросов в разных базах данных.

Вам необходимо позаботиться о следующих вещах:

  • многопользовательская стратегия - для использования MySql MultiTenancyStrategy.DATABASE

  • реализация MultiTenancyConnectionProvider, которую вы можете передать через свойство hibernate.multi_tenant_connection_provider

  • реализация CurrentTenantIdentifierResolver, которую можно передать через свойство hibernate.tenant_identifier_resolver

Вы можете следовать официальному документу для получения более подробной информации и примеров кода, а также этой превосходной практической статье самого мастера.

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