2013-07-07 2 views
0

Мне нужно запросить базу данных для различной комбинации элементов из уже полученного объекта результата.несколько условий или несколько отдельных запросов JPQ/Hibernate - для объектов

Например, я получаю список объектов Person. Для каждого лица в лицах-субъектах мне нужно получить список адресов (для каждого человека).

Есть два способа сделать это:

  1. итерируем Person сущности и огнестойкость запрос для каждого человека, лица, чтобы получить список адресов для этого человека.
  2. Создайте запрос динамически с элементами из объекта Person и пожарите ОДИН один запрос, чтобы вытащить все списки адресов для всех лиц, а затем снова итерации объекта Person и сопоставить список адресов для каждого Лица.

Я не знаю много многих лиц, которые я мог бы получить. Итак, какой лучший подход с точки зрения производительности и практики.

Так что, если у меня есть 100 человек лица, в первом подходе его будет 100 запросов против 2 подхода с огромным запросом, как показано ниже

from address where (person.id = 1 and person.zip = 393) 
        or (person.id = 2 and person.zip = 123) 
        or (person.id = 3 and person.zip = 345) 
        .... // 10 times. 

Какой из них лучше? Любые ограничения/ограничения на Or условия в Oracle? Есть ли лучший подход? Пакетные запросы?

ответ

0

Вы можете использовать спящий режим с активной загрузкой, чтобы напрямую получить результаты, которые вы хотите, загрузив человека с необходимыми ограничениями. Или, если вы хотите придерживаться ленивой загрузки, попробуйте использовать внутреннее соединение с человеком и адресом, чтобы затем получить список массива, который состоит из результатов.

+0

Может быть, я не был ясен в своем вопросе. Я не могу связать человека с адресом. Я должен перебирать Entity Person, чтобы получить адрес для каждого Person. Вопрос: Один запрос или несколько запросов –