2009-08-27 176 views
0

由於無法使用Google App Engine數據存儲庫連接表,因此我循環查看實體列表,並使用外鍵值逐個查找相關實體。Google App Engine/JDO:有會話緩存嗎?

for (Employee staff: staffList){ 
    Employee manager = pm.getObjectById(Employee.class, staff.getManagerId()); 
}  

有,我也將需要同樣引用的實體超過一次很好的機會,我不想去兩次數據存儲在同一個實體。

是否有某種會話緩存,我可以啓用以消除重複的查找,還是我必須滾動自己的?

回答

1

JDO規範不強制要求一個PersistenceManager中實例的高速緩存,根據datanculeus,誰與App Engine的JDO功能提供了幫助:

link to datanucleus cache page

但是,我知道,有頃仍然有一些事情失蹤從AppEngine上實現,這裏提到:

app engine unsupported features

的好消息是,緩存似乎並不在此列。壞消息是,我無法確定是否實施了1級緩存。儘管如此,測試應該不會那麼難 - 讓你的代碼獲得100個不同的實體,然後讓它獲得100次相同的實體。

+0

我會試試看。可能甚至不需要計時,因爲Google會爲每個API調用計費,因此您可以實際查看頁面在配額摘要中執行的呼叫次數。 – Thilo 2009-08-27 22:40:26

+0

輝煌!讓我們知道它是如何解決的,所以你可以拯救下一個傢伙一些麻煩! – 2009-08-28 02:02:24

+1

由於該部分位於DataNucleus「核心」jar中,所以實現了L1和L2緩存。默認情況下,L2緩存未打開 – DataNucleus 2009-08-28 06:01:01