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")