我正在使用hibernate
,spring-data-jpa
和querydsl
。
当我第一次连接到索引页面时,我手动计算所有repository.findXXX()
语句的查询时间。这些通常约为 5秒,但当我刷新页面时,他们只需 1秒即可运行。
有人可以解释这种差异吗?
答案 0 :(得分:3)
数据库很可能已缓存您的查询,因此第二次运行速度更快。
要让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();