我正在使用 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();
关于java - 同一个请求的不同执行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27647003/