【问题标题】:Eager fetching of children with JDO (Datanucleus)渴望获取具有 JDO (Datanucleus) 的孩子
【发布时间】:2010-06-01 17:11:19
【问题描述】:

JDO 可以一次获取数据库模型的所有子模型吗?

喜欢:

class Parent {
 @Persistent(mappedBy="parent") 
 private Set<Children> children;
}

class Children {
 @Persistent
 private Parent parent;
 @Persistent
 private String name;
}

在我的情况下,我有大量的父母,我会立即获取它们。然后访问他们的孩子需要很多时间,因为他们是懒惰的。

JDO (Datanucleus) 是否支持他们与父母一起一次提取?

我还尝试使用另一个查询独立地获取所有子项,然后将它们放入 Level2 缓存中,但它们仍然被获取(也许 jdo 不知道它们的关系?因为 ForeignKey(父 ID)还没有一开始就被拿走了?)

任何想法如何更快地读取数据结构?

干杯,

一月

【问题讨论】:

    标签: java jdo datanucleus


    【解决方案1】:

    你在使用Fetch Groups吗?您的子类可能不在默认提取组中。

    当一个对象从 JDO 的数据存储通常不是全部 立即检索字段。这 是因为出于效率目的 只有特定的字段类型是 在初始访问中检索到 对象,然后是任何其他对象 访问时检索(惰性 加载)。字段组是 加载的称为获取组

    【讨论】:

    • 我使用 FetchGroups,但据我所知,他们不控制一次获取的内容,而只控制(例如)分离的内容。你同意吗?我不想分离对象。在上面的特殊情况下我不需要它。 (此外,分离也不会一次获取集合的所有子项)
    • 获取计划适用于附加/分离同时获取的内容。我链接到同一页面的另一句话:“FetchPlan 不仅适用于对 PersistenceManager.getObjectById() 的调用,还适用于 PersistenceManager.newQuery()、PersistenceManager.getExtent()、PersistenceManager.detachCopy 等等。”
    猜你喜欢
    • 2014-05-15
    • 1970-01-01
    • 2018-11-05
    • 2011-04-28
    • 1970-01-01
    • 1970-01-01
    • 2021-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多