2009-08-27 114 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