java - 同一个请求的不同执行时间

标签 java spring hibernate jpa spring-data

我正在使用 hibernatespring-data-jpaquerydsl

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

有人能解释一下这种区别吗?

最佳答案

  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();
      

关于java - 同一个请求的不同执行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27647003/

相关文章:

java - 在 Windows 平台上使用 Java 查找特定路由的传出 IP 地址

java - Pentaho Acegi 安全框架摘要式身份验证和 Ruby on Rails

forms - Spring MVC - 部分绑定(bind)到表单时如何不丢失字段值

android - 验证异常 : unable to find default provider, Android

hibernate - JPA 实体中的枚举字段

java - 查找 JPG 图像中文本的边界框

java - 从另一个类追加到 JTextArea

java - 什么原因导致 "java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name ' 命令'可用作请求属性”?

java - Hibernate validator 不起作用

java - 在处理之前禁用框架