NHibernate (для .Net) имеет интерфейс IMultiQuery, в котором можно создать реализацию для использования ISession.CreateMultiQuery (). Мультизапрос позволяет запускать несколько операторов hql в одном пакете. Я не могу найти эквивалентную функцию в Hibernate (для Java).
Мультизапрос был бы идеален для Java-приложения, над которым я сейчас работаю. Он содержит около 10 запросов на выборку HQL, работающих в тесном цикле. Нагрузочное тестирование показывает, что это примерно на 50% медленнее (или, по-другому, это занимает вдвое больше времени, чем требуется). Мой анализ говорит, что почти все время затрачивается на задержку в сети между сервером приложений и базой данных. Я могу определенно переписать код, чтобы избежать узкого цикла, но это был самый простой дизайн, и он уже был проверен на корректность.
Итак, если я смогу как-то отбросить все 10 запросов HQL в одном пакете, это должно дать более чем достаточное увеличение производительности, не прибегая к более радикальным и подверженным ошибкам мерам. Есть ли способ сделать это с Hibernate в Java?