Весенний многоквартирный дом

У меня есть две базы данных: Oracle и PostgreSQL, где у меня есть несколько схем — по одной на каждого клиента. Мне нужно иметь возможность маршрутизировать источники данных по веб-запросу. Я пытался использовать AbstractRoutingDatasource Spring, но он работает только с одним диалектом. Есть ли другие решения этой задачи?

Зачем вам это в одном приложении? Разве вы не можете настроить несколько приложений, каждое из которых будет работать с собственной базой данных? И просто выберите нужный. Создайте репозиторий и повторно используйте его во всех своих приложениях.

nllsdfx 12.06.2019 17:07
маршрутизировать источники данных по веб-запросу, эти веб-запросы имеют разные URL-адреса? Я хочу сказать, различаются ли классы реализации службы для разных клиентов, или вы хотите инициализировать один класс службы службы с разными источниками данных?
Sabir Khan 14.06.2019 11:08
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
3
2
110
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я нашел решение. Вы можете явно указать Hibernate, какой диалект выбрать, используя свойство hibernate.dialect. Таким образом, вы можете реализовать свой собственный класс расширения диалекта org.hibernate.dialect.Dialect, переопределить все общедоступные методы и делегировать вызовы определенным диалектам. Хорошо, что Hibernate вызывает эти (Dialect) методы перед выполнением каких-либо запросов к базе данных. В моем конкретном случае я реализовал собственный диалект с картой диалектов, которые мне нужны для моего проекта, и теперь я могу использовать те же репозитории и свободно выбирать Postgresql, Oracle или MySQL в зависимости от вошедшего в систему пользователя.

Отличное решение и объяснение, большое спасибо!

lenach87 05.01.2021 22:54

Другие вопросы по теме