5

虽然我会在 1:1 关系中选择 Ghost 模式,但我不确定这在 1:n 关系中是否足够。

例如,当我加载可能有一百个 Item 对象的 Order 对象时,我会首先将 NULL 分配给 items 属性。

问题是:

A)我是否应该分配 NULL,然后在首次访问 items 属性时查找该项目的所有订单并加载所有订单?

B)或者我应该只加载一个仅包含所有 order_id 的轻量级记录集并加载 100 个仅设置了 order_id 的 Item Ghost 对象,但其他所有内容均为 NULL - 并且一旦访问 Item 对象以从中获取更多详细信息,延迟加载特定的 Item 对象数据?

4

1 回答 1

1

好吧,IMO 您对延迟加载的需求在每种情况下都不同。但是,我想说,如果您的订单大到足以容纳 100 件商品,那么您很少会想同时加载所有 100 件商品。

我建议您按需加载每个项目,允许您加载项目的“页面”或仅加载一个项目。例如,如果您需要列出所有项目,您可以加载该列表的“页面”,并且由于每个项目都可以按需加载,您只需加载所选页面。此外,为了提高性能,您可能希望回收这些对象,因此您可能会考虑构建 10 个 Ghost 项目,然后一次将一个“页面”加载到这 10 个项目中。

另一方面,由于项目是按需加载的,因此您可以只加载一个项目,以便仅在需要时显示该项目的完整详细信息。

于 2012-10-16T15:47:22.817 回答