2010-06-01 32 views
1

JDO能否一次抓取數據庫模型的所有孩子?JDO(Datanucleus)幼兒抓取兒童

像:

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)hasn'最初是否被取到?)

任何想法如何更快地讀取數據結構?

乾杯,

回答

3

是否使用Fetch Groups?您的子類可能不在默認提取組中。

當一個對象從數據存儲 通過JDO通常檢索不是所有 字段立即檢索。這 是因爲出於效率目的 僅特定字段類型是在 物體的初始訪問檢索 ,然後任何其他對象的訪問(懶惰 加載)時檢索 。加載的域名爲 的域稱爲獲取組

+0

我使用FetchGroups,但據我所知,它們不控制一次抓取的內容,而僅控制什麼是(例如)分離。你同意嗎?我不想分離物體。在上面的特例中我不需要它。 (另外,分離也不會立即獲取集合的所有子項) – Jan 2010-06-02 12:02:42

+0

提取計劃適用於附加/分離*和*一次獲取的內容。另一個引用來自我鏈接到的頁面:「FetchPlan不僅適用於調用PersistenceManager.getObjectById(),還適用於PersistenceManager.newQuery(),PersistenceManager.getExtent(),PersistenceManager.detachCopy等等。」 – 2010-06-02 12:50:01