2009-12-16 58 views
0

我有一個包含骨架(元數據)和大型數據對象的數據模型。我想將骨架保留在內存中,並保留對數據對象的弱引用。我理解我將如何使用普通Java實現這個,我將如何創建一個WeakHashMap並清理等。但是我想知道什麼是在GC'd之後重新生成數據對象的最佳方式?使用db4o在數據模型中緩存大兒童

我應該爲我的地圖添加一個技術關鍵字,並將其分配給數據對象中的一個字段,以便我可以再次找到它?或者我應該調用db.ext()。getId()並將此ID用作技術密鑰?如果是這樣,加載父項時如何獲得這些密鑰?你有什麼建議?

回答

0

我會爲您的大型數據對象添加技術密鑰。然後,您將此技術密鑰存儲在您的元數據類中。 現在,當您獲得大型數據對象時,您可以通過它獲取技術關鍵。這非常簡單的解決方案。

Db4o實際上使用弱引用來返回相同的對象並避免不必要的反序列化。所以當你要求一個對象並且沒有被GC收集時,db4o將返回相同的對象。

+0

只是爲了確保:這意味着我不能在元數據和子元素之間使用一些魔術關係(比如「查找曾經在此列表中的所有項目」)? – 2009-12-16 16:10:00

+0

據我所知,沒有這樣的事情。我認爲有可能構建這樣的東西。但我還沒有嘗試過。這個想法是實現一個db4o意識的類,它代表了這樣一個參考。藉助回調和激活的一些聰明技巧,您可以實現它。 – Gamlor 2009-12-16 16:35:40