簡體   English   中英

spring data jpa做緩存嗎

[英]does spring data jpa do caching

我有一個看起來像這樣的簡單存儲庫

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;
}

而且我看到第一次調用花費了3501244035 ms 第二,第三和其他調用花費的時間減少了21947122ms30584213ms等等。

我的問題是Spring Data JPA緩存某些查詢結果?

Spring Data JPA是JPA的“包裝”(或漂亮的外觀),因此在其下面仍具有標准的JPA功能。 您在EntityManager / Session級別具有1lvl緩存,在EntityManagerFactory / SessionFactory級別具有2lvl緩存。 緩存的類型更多,例如:查詢結果緩存等。您可以在此處了解更多有關它們的信息 (適用於較早的Hibernate版本,但它仍然有效)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM