3

我有兴趣在我的桌面应用程序中使用 db4o 作为我的持久性机制,但我担心一些事情。

第一个问题:意外剪裁非常复杂的对象图。

假设我有一棵高度为 10 的树并且我获取了根,它如何处理我再次存储根对象?

据我了解,它不会获取整个树,而是获取前 5 个引用层。

所以..如果我对根进行微不足道的更改然后存储它,它会在树的下方剪掉节点,实质上是删除它们。

如果没有..它如何处理这个?

第二个关注点:在更大的对象图中提取子图

使用上面的树示例...如果数据库包含 1 棵巨大的树,我可以在其中查询单个节点吗?由于.store只调用了一次,我的数据库是否认为它只包含 1 条“记录”

谢谢你。

4

2 回答 2

2

您必须非常小心,因为可能会发生两件事:您可以将整个数据库拉入内存,或者只是部分图(其余对象将为空)。
在 db4o 中有 Activator 和 Update 深度的概念,可以根据 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

于 2009-01-13T12:56:16.883 回答
2

DB4O 的透明激活应该可以解决您在此处表达的大部分担忧。

于 2009-09-27T20:16:39.790 回答