【问题标题】:Google App Engine / JDO : is there a session cache?Google App Engine / JDO:是否有会话缓存?
【发布时间】:2010-11-23 06:41:26
【问题描述】:

由于无法使用 Google App Engine 数据存储连接表,因此我遍历实体列表并使用外键值逐一查找相关实体。

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

很有可能我会多次需要同一个引用实体,并且我不想为同一个实体访问数据存储区两次。

我可以启用某种会话缓存来消除重复查找,还是我必须自己滚动?

【问题讨论】:

    标签: java performance google-app-engine jdo


    【解决方案1】:

    据 datanculeus 说,JDO 规范确实要求在 PersistenceManager 中缓存实例,他提供了有关应用引擎 JDO 功能的帮助:

    link to datanucleus cache page

    但是,我知道 appengine 实现中仍然缺少一些东西,如下所述:

    app engine unsupported features

    好消息是缓存似乎不在该列表中。坏消息是我无法确认已实现 1 级缓存。不过测试应该不难 - 为您的代码获取 100 个不同实体的时间,然后获取相同实体的时间为 100 次。

    【讨论】:

    • 我会试试的。可能甚至不需要计时,因为 Google 会按 API 调用向您收费,因此您可以在配额摘要中实际查看该页面执行了多少次调用。
    • 太棒了!让我们知道结果如何,这样您就可以为下一个人省去一些麻烦!
    • L1 和 L2 缓存已实现,因为该部分位于 DataNucleus“核心”jar 中。 L2缓存默认不开启
    猜你喜欢
    • 2011-01-01
    • 1970-01-01
    • 2010-11-25
    • 2011-03-11
    • 2012-01-25
    • 1970-01-01
    • 1970-01-01
    • 2010-12-11
    • 2011-12-28
    相关资源
    最近更新 更多