У меня есть две таблицы в двух отдельных базах данных Oracle (не схемах), которые мне нужно объединить в Hibernate. В настоящее время у меня есть две сессии Hibernate, выходящие в отдельные базы данных. Прежде чем кто-либо скажет, посмотрите на Hibernate Shards, я потратил большую часть дня, рассматривая этот подпроект и обнаружил, что: он предназначен для данных с горизонтальным разделением (все таблицы должны быть во всех базы данных AFAIK), нельзя сказать Shards искать только в одной базе данных (Hibernate Shards Docs), и над ним больше не работает.
Вещи, о которых я думал, чтобы попытаться решить эту проблему:
Выполнение
findAll()
или некоторого ограниченного варианта этого в обеих таблицах и ручное объединение с использованием нескольких циклов. (Хорошо для очень маленьких столов - запретить от маленьких столиков вверх)Пусть сеансы будут взаимодействовать друг с другом (я понятия не имею, возможно ли это вообще сделать - придется взглянуть на Hibernate Session API)
Извлеките имя базы данных из строки URL другого hibernate-xxxx.cfg.xml и вставьте их в отдельные файлы hbm.xml, например, так:
<class name="foo" table="foo_table" schema="foo_schema" catalog="foo_db">
(Судя по моим первоначальным тестам, это не сработало, и это похоже на дыру в безопасности грузовика)Используйте шаблон репозитория (не уверен, достаточно ли силен мой Java-Fu)
Есть ли что-то, что я упускаю из виду в одном из случаев выше, или это может быть другой способ, который я не перечислил выше?