Использование CF9 ORM для листинга страниц: HQL или SQL? - PullRequest
2 голосов
/ 20 августа 2010

У меня есть отображение ORM, которое имеет:

объект журнала с отношением многих к одному жанру и отношение один ко многим к проблемам

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

Все отлично работает, просто используя

EntityLoad('magazine');

... но взгляд на журнал консоли показывает, что он выполняет один запрос для списка журналов, один запрос для поиска имени каждого жанра и один запрос для каждого журнала, чтобы загрузить все выпуски для этого журнала (просто чтобы получить счет!). По мере того, как набор данных будет увеличиваться, производительность будет все больше и больше.

Конечно, традиционно я просто имел бы объединенный SQL-запрос, который возвращал бы все необходимые мне данные в одном запросе. Есть ли способ добиться того же в HQL, или мне лучше использовать стандартный запрос SQL?

Я посмотрел на синтаксис HQL "SELECT", но он не очень удобен для пользователя, так как возвращает запросы со столбцами со специальными именами в виде массива массивов, с которыми не особенно приятно работать ...

1 Ответ

2 голосов
/ 20 августа 2010

Что-то, что может помочь с этим, использует стратегию извлечения.По сути, вы можете дать ORM инструкцию для получения этих связанных записей, используя соединение

. Вы должны установить fetch = "join" для отношения один ко многим.

Для получения дополнительной информации см.: http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSE01EDE03-6E6B-4669-8C54-358460778450.html

...