2

我想知道是否有任何方法可以使用 db4o 延迟加载对象?我阅读了所有的教程,似乎这个功能不存在。

让我们澄清一下我的观点。例如,假设我有一个包含 50 个复杂字段的 House 对象。

House
 1) location : Country (complex object)
 2) window : Window (complex object)
 3) livingRoom : Room (complex object)
   .
   .
   .
 50) door : Door (complex object).

假设在我的程序的某个地方,我只需要房子的位置。如果我开启了db4o的透明激活机制,当我访问location字段的时候,整个house对象都被激活了,也就是说所有的字段都被填满了值。这很愚蠢,因为从数据库中检索所有其他大而复杂的字段(在这种情况下我不会使用)都是无用且昂贵的。

如果我有办法告诉 db4o 要么完全激活一个对象,要么只根据我的需要激活对象的某些字段,那就太好了。

4

1 回答 1

0

如果我对您的理解正确,那么 db4o 的透明激活应该足以完成您想要的,前提是您的所有“子对象”也实现了 Activatable 接口(当然,您在配置中添加了TransparentActivationSupport)。

因此,在您的示例中,当房屋被激活时,其所有字段都将变为非空但不会被激活;只有当您访问这些字段时,它们才会被激活。

您能否发布让您相信所有对象都被激活的代码(或简单测试)?

最好的

于 2012-07-11T18:43:17.010 回答