簡體   English   中英

Spring JPA 是否對當前上下文/請求中已經檢索到的緩存實體做任何聰明的事情?

[英]Does Spring JPA do anything smart with caching entities already retrieved in the current context/request?

如果我有一個實體Product和一個將product作為字段的實體Order ,並且在處理來自 Controller 的請求時, Product product = order.getProduct()的結果是否會在整個調用過程中被緩存,即使該方法調用本身的結果不再被賦值? 假設product沒有被修改並且可以被安全丟棄。

即類似的東西:


Product product = order.getProduct();
doOtherStuff(order);


void doOtherStuff(Order order) {
    Product product = order.getProduct();
}

后者調用order.getProduct()總是/從不/通常/有時會導致另一個數據庫調用嗎? 這樣做的條件是什么? 假設 Spring 啟動應用程序。

我意識到我可以看到一行代碼的數據庫查詢,但我的目標是了解它背后的機制。

您可以通過將這些屬性添加到application.properties文件來激活選項以顯示所有執行的查詢。

logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE

然后你可以看到它是否執行了兩次查詢。

簡短地說,根據我的經驗,它不會緩存任何東西 因此,每次您進行調用時,它都會執行對 DB 的查詢/調用。

您可以在 Spring 引導中檢查緩存:

https://www.baeldung.com/spring-cache-tutorial

暫無
暫無

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

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