【问题标题】:Lazy-loading with db4o使用 db4o 进行延迟加载
【发布时间】:2012-07-11 13:04:22
【问题描述】:

我想知道是否有任何方法可以使用 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字段时,整个房子对象是 已激活,这意味着所有字段都填充有值。 这很愚蠢,因为从数据库中检索所有其他大而复杂的字段(在这种情况下我不会使用)都是无用且昂贵的。

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

【问题讨论】:

    标签: lazy-loading db4o


    【解决方案1】:

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

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

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

    最好的

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-30
      • 2011-01-09
      • 2017-07-08
      • 1970-01-01
      • 2013-04-11
      • 2021-07-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多