gpt4 book ai didi

java - spring data jpa 是否做缓存

转载 作者:行者123 更新时间:2023-12-01 19:57:23 25 4
gpt4 key购买 nike

我有一个如下所示的简单存储库

public interface PlayerLevelRepository extends CrudRepository<PlayerLevel, Integer> {
@Query("FROM PlayerLevel WHERE exp <= :exp ORDER BY exp DESC")
List<PlayerLevel> findClosestToExperienceLevel(@Param("exp") long exp);
}

我正在分析休息的响应时间,发现第一次休息执行比下一次慢十倍。

所以我决定像这样检查存储库方法的时间(我没有任何其他耗时的操作)

@Override
public int findClosestLevel(long exp) {
long startTime = System.nanoTime();

int closestLevel = levelRepository.findClosestToExperienceLevel(exp).get(0).getLevel();

long endTime = System.nanoTime();
LOGGER.info("Execution time: {}", endTime - startTime);
return closestLevel;
}

我发现第一次调用花费了 35012440 又名 35 毫秒。第二次、第三次和其他调用花费的时间少十倍 - 21947122ms30584213ms 等等.

我的问题是 - Spring Data JPA 是否缓存某些内容的查询结果?

最佳答案

Spring Data JPA“只是”JPA 的包装器(或漂亮的外观),因此在底层您仍然具有标准的 JPA 功能。您在 EntityManager/Session 级别拥有 1lvl 缓存,在 EntityManagerFactory/SessionFactory 级别拥有 2lvl 缓存。缓存的类型还有很多,比如:查询结果缓存等。您可以阅读更多相关内容 here (它适用于较旧的 Hibernate 版本,但它应该仍然有效)。

关于java - spring data jpa 是否做缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49105767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com