Я использую hibernate
, spring-data-jpa
и querydsl
.
Когда я впервые подключаюсь к моей индексной странице, я вручную подсчитываю время запроса всех своих операторов repository.findXXX()
. Обычно это составляет около 5 секунд, но когда я обновляю страницу, они занимают только 1 секунду.
Может ли кто-нибудь объяснить эту разницу?
Скорее всего, база данных кэшировала ваш запрос, поэтому он работает быстрее во второй раз.
Чтобы Hibernate кэшировал ваш запрос, вам необходимо:
настроить кеш второго уровня с кешированием запросов:
<prop key="hibernate.cache.use_second_level_cache">true</prop>
<prop key="hibernate.cache.use_query_cache">true</prop>
<prop key="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</prop>
активировать кеш запросов для текущего текущего запроса: ****
List cats = session.createQuery("from MyEntity")
.setCacheable(true)
.list();
mysql
) или hibernate кэширует мой запрос?