Для подзапросов - что хорошего? HQL или Критерии -DetachedCriteria - PullRequest
1 голос
/ 16 января 2012

Рассмотрим следующий запрос.

SELECT * FROM T1 WHERE T1.id = (SELECT id1 FROM T2 where T2.id1 = (SELECT id2 FROM T3))
 AND T1.anotherId IN (SELECT id3 FROM T3);

Я полагаю, что HQL более эффективен, чем использование Criteria API с DetachedCriteria?

Я внедрил (в основном) Критерии в моем проекте, это выглядит так ООП. Также легче для глаз (это зависит от восприятия)

Мысли?

1 Ответ

1 голос
/ 16 января 2012

Для сложных запросов я предпочитаю использовать Criteria API.

Когда вы пишете JPQL / HQL-запрос, вы сами по себе. В некоторых случаях (я не говорю, что это Ваш случай), критерии могут генерировать более качественные и оптимизированные запросы.

Я всегда использовал это правило:

  • Если запрос достаточно прост - используйте JPQL
  • Если это сложно - используйте Критерии
  • Если это слишком сложно для Критериев - вещь о хранимой процедуре или редизайне
...