2009-01-12 63 views
3

我有興趣在我的桌面應用程序中使用db4o作爲我的持久性機制,但我很關心一些事情。db4o顧慮

第一個問題:意外剪切非常複雜的對象圖。

假設我有一棵高度爲10的樹,我獲取根,它如何處理我再次存儲根對象?

從我的理解來看,它並沒有獲取整個樹,它取得了前5個引用層。

所以..如果我做一個簡單的切換到根,然後保存它,將它進一步剪除節點下的樹,在本質上刪除它們。

如果不是......它如何處理這個問題?

2日關注:提取子圖在一個較大的對象圖

用我上面的樹例子...如果數據庫中包含大量的1個樹我可以查詢在其中一個節點?由於.store只被調用一次,我的數據庫是否認爲它只包含1個「記錄」

謝謝。

回答

2

你必須要非常小心,因爲兩件事情可能發生:你可以把整個數據庫到內存中,或只是局部圖形(對象的其餘部分將是空)。
在db4o中,有激活和更新深度的概念,可以在配置dbv40時配置,也可以在獲取對象時進行配置。它是你告訴db40你獲取參考對象時想讓他走多深的方式。檢查db4o的網站上,有文檔看:
http://developer.db4o.com/Resources/view.aspx/Reference/Object_Lifecycle/Activation
http://developer.db4o.com/Resources/view.aspx/Reference/Object_Lifecycle/Update_Depth

2

DB4O的透明激活應該可以解決大多數你在這裏所表達的擔憂。