Spring boot 2 hibernate множественная схема

У меня есть одна БД (MySql) и несколько схем (schema_a,schema_b,schema_c). Схемы имеют одинаковые таблицы, идентичные.

Текущая схема зависит от данных текущего пользователя (сеанса). Например, текущий пользователь из компании A, тогда текущая схема - "schema_a". Соответственно, метод EmployeeRepository.findAll() извлекает данные из схемы "schema_a".

В спящем режиме с весенней загрузкой 2 возможно ли динамически изменить текущий entityManager? Если да, то как?

Помогите, пожалуйста

2 ответа

Решение

То, о чем вы говорите, называется мультитенантной архитектурой.

Вы могли бы установить catalog (это схема в вашем случае) на основе некоторой информации аутентификации.

Как бы вы это сделали, это реализовать interceptor который определяет, какую схему необходимо установить, а затем устанавливает правильный "арендатор" в TheardLocal (по которому работает ваш запрос). Я использовал этот подход с большим успехом, и я верю, что это именно то , что вы ищете.

Я мог бы написать это здесь, однако нет необходимости повторять то, что уже существует. Есть очень хорошая статья, которая послужила вдохновением для моего решения, и я предлагаю вам взглянуть здесь.

Я понял это, когда использую и MySQL, и PostgreSQL. Первый параметр отличается.

Для MySQL:

схема = "данные"

      @Table(schema = "data", name = "datasourcesample")

Для PostgreSQL:

каталог = "данные1"

      @Table(catalog = "data1", name = "datasourcesample")
Другие вопросы по тегам