我有兴趣在我的桌面应用程序中使用db4o作为我的持久性机制,但是我关心一些事情。
第一关注事项:意外地裁剪非常复杂的对象图.
假设我有一棵高为10的树,我取了根,它如何处理我再次存储根对象?
根据我的理解,它不获取整个树,而是获取前5个引用层。
所以..。如果我对根进行了简单的更改,然后将其存储起来,它是否会将节点剪裁到树的更远的位置,实质上就是删除它们。
如果不是..。它怎么处理这件事?
第二个关注点:在较大对象图中提取子图
用我上面的树例子..。如果数据库包含1棵庞大的树,我可以查询其中的单个节点吗?由于.store只被调用一次,我的数据库是否认为它只包含1条“记录”?
谢谢。
发布于 2009-01-13 12:56:16
您必须非常小心,因为有两种情况可能发生:您可以将整个db拖到内存中,或者只是部分图(其余的对象将为null)。
在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
发布于 2009-09-27 20:16:39
DB4O的透明激活应该可以解决您在这里表达的大部分担忧。
https://stackoverflow.com/questions/434284
复制相似问题