14.10.2019

Автор: Misterzym

1 Star2 Stars3 Stars4 Stars5 Stars
Загрузка...

Hibernate — динамическая связь между базами

Hibernate — отличная библиотека для работы с БД в java. Встала недавно задача связи таблиц в разных базах. Гуру конечно скажут, это делается через аннотацию в сущности таблицы, но у этого способа есть свои ограничения:

и собственно 2 класса

Но в моей задачи стояло динамическое изменение имени базы, из конфига. Гугл утверждал, методами библиотеки это сделать нельзя (у меня еще и конфиг кастомный, не пользуюсь xml настройкой, хочу свои конфиги и все тут). Не буду описывать все множественные изыскания на эту тему, просто расскажу как в конце концов решилась проблема, надеюсь это кому-то поможет, поскольку в интернете решения готового так и не нашлось.

Самым простым решением, оказалось рефлексией изменять в сущности аннотацию и уже после этого скармливать это фабрике. Само собой в данном виде, пользователь БД должен иметь доступ в все нужные базы. Как в моем случае, если ему нужна всего пара колонок из таблицы другой базы — можно дать ему права только на чтение, только на них, и не сильно переживать.

 

  • Комментарии VK