Представляю вашему вниманию перевод шестой главы официальной документации Hibernate.
Перевод статьи актуален для версии Hibernate 4.2.19.Final
Предыдущая глава —
Документация разработчика Hibernate – Глава V. Блокировки
Что собой представляют кэш первого и второго уровня в Hibernate, показано на следующий диаграмме (
прим. автора).
6.1. Кэш запросов
Если у вас есть запросы, выполняющиеся снова и снова, с одними и теми же параметрами, кэширование запросов предоставит выигрыш в производительности.
Кэширование вводит дополнительные накладные расходы в области выполнения транзакций. К примеру, если вы кэшируете результаты запроса по отношению к какому-либо объекту, Hibernate необходимо отслеживать, были ли закоммичены какие-либо изменения по объекту, и в соответствии с этим, аннулировать записи в кэше. В дополнение, плюсы от кэширования запросов ограничены, и очень зависят от шаблонов использования вашего приложения. По этим причинам, Hibernate по-умолчанию выключает кэширование запросов.