Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate cross database query / 7 сообщений из 7, страница 1 из 1
27.01.2012, 00:32:15
    #37634203
Evsyukov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate cross database query
Есть несколько Java-приложений. Каждое из них имеет свою БД.
Кроме того есть одна общая БД.
Используемые технологии в приложениях на Java: Spring + Hibernate.
Можно ли сконфигурировать Hibernate так, чтобы стало возможным выполнять запросы вида:

Код: sql
1.
2.
3.
select * 
from db1.t1 as ta
join db2.t1 as tb on ta.id = tb.id



Hibernate позволяет использовать в одном приложении несколько БД, но запросы можно выполнять только к одной БД.
Как сделать через Hibernate запрос к нескольким базам? Возможно ли это вообще в Hibernate?
...
Рейтинг: 0 / 0
27.01.2012, 02:01:00
    #37634274
mijer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate cross database query
Искать по ключевому слову catalog тут
...
Рейтинг: 0 / 0
27.01.2012, 08:16:03
    #37634342
svenom
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate cross database query
mijerИскать по ключевому слову catalog тут Каталоги - это базы в одном и том же инстансе СУБД. Если базы физически находятся в разных местах, то задача автора в той постановке, что он привел, нерешаема.
...
Рейтинг: 0 / 0
27.01.2012, 09:32:43
    #37634387
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate cross database query
скажу по правде, она не решаема, не только в хибере, но и нигде ВНЕ субд (напр. MDAC).
Только в СУБД можно сделать dbLink на внешнюю БД\Excell файл и писать
select link@table join
______________________________________________
"Сделай настолько просто, насколько это возможно, но не проще". © А. Эйнштейн.
AutoPOI.ru — ГИС-технологии для Oracle
...
Рейтинг: 0 / 0
30.01.2012, 02:34:31
    #37637563
igorolv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate cross database query
Разные базы для хибера - это разные сессии к разным источникам данных.

Если из одной базы "видна" другая (с помощью того же db-link-а), то можно в описании таблицы задать "префикс", чтобы сгенерированные запросы выглядели примерно так:
select user1.table1 join user2.table2 ...join link1@table3

Если же две базы ничего не знают (а, может, и не могут) знать друг о друге, то напрямую select база1.table1 join база2.table2 писать не получится.

Но частично решить задачу все же можно. Например, изменив процесс загрузки и сохранения объектов (interceptor-ами или просто поменяв setter-ы).

Как вариант:

Если сузить задачу до: "При загрузке объекта из одной бд (рабочей), нужно подгружать справочные объекты из другой базы (справочной) по их идентификаторам, имеющимся в таблице объекта рабочей базы.":

1) сбрасываем spring context в статическую переменную, чтобы можно было доставать его из любого места вызовом статического метода. Примеры этого фокуса можно нагуглить на тему "как получить spring context"

2) Описываем в application-context 2 разные sessionFactory, каждая из которых живет на своем личном файле конфигурации hibernate

3) При загрузке объекта из рабочей бд, добавляем в setter идентификатора справочного объекта примерно такой код:
Код: java
1.
2.
3.
4.
private setКод_Справочного_Объекта(Код_Справочного_Объекта) {
    this.Код_Справочного_Объекта = Код_Справочного_Объекта
    this.справочный_объект = Context.getContext().getСправочнаяБдSessionFactory()....getСправочныйОбъектDAO().getById(Код_Справочного_Объекта);
}
...
Рейтинг: 0 / 0
09.03.2012, 01:31:01
    #37696861
Evsyukov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate cross database query
Спасибо за ответы.
Вывод, в общем - задача нерешаема (хотя, в некоторых частных случаях можно придумать workaround).
...
Рейтинг: 0 / 0
11.03.2012, 21:02:31
    #37699524
Йуный джавистЪ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate cross database query
JBoss teiid
oracle heterogeneous services
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate cross database query / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]