同一请求的执行时间不同

时间:2014-12-25 11:59:54

标签: java spring hibernate jpa spring-data

我正在使用hibernatespring-data-jpaquerydsl

当我第一次连接到索引页面时,我手动计算所有repository.findXXX()语句的查询时间。这些通常约为 5秒,但当我刷新页面时,他们只需 1秒即可运行。

有人可以解释这种差异吗?

1 个答案:

答案 0 :(得分:3)

  1. 数据库很可能已缓存您的查询,因此第二次运行速度更快。

  2. 要让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();