Я тепло рекомендую Подсказку SQL Красного Логического элемента. Автоматическое обнаружение (intellisense на таблицах, хранимых процедурах, функциях и собственных функциях) является не чем иным как потрясающий!:)
Это идет с ценой все же. Нет никакой бесплатной версии вещи.
Думаю, я наконец нашел причину. Кажется, что api критериев создает новые имена переменных каждый раз, когда выполняется подготовленный оператор. База данных (в нашем случае DB2) вычисляет новый план выполнения запроса каждый раз при выполнении оператора. С другой стороны, HQL использует те же имена переменных, что позволяет базе данных повторно использовать планы выполнения запросов.
Обычно я считаю, что HQL очень близок к оптимальному, поскольку это почти прямой SQL с несколькими заменами. Я бы предположил, что перевод с HQL на SQL - это просто подстановка; Criteria API, вероятно, генерирует HQL для последующего преобразования. Как правило, лучше всего подходит HQL.