ope*_*rog 5 database orm database-design datamapper
虽然我将以1:1的关系选择Ghost模式,但我不确定这是否足以构成1:n的关系.
例如,当我加载一个可能有一百个Item对象的Order对象时,我首先会给items属性赋值NULL.
问题是:
A)我应该分配NULL然后,在第一次访问items属性时查找该项的所有订单并加载所有这些订单?
B)或者我应该只加载一个只包含所有order_id的轻量级记录集,并加载100个Item Ghost对象,这些对象只设置了order_id,但其他一切都是NULL - 一旦访问了Item对象以从中获取更多细节,懒加载那个特定的Item对象数据?
嗯,在我看来,您对延迟加载的需求在每种情况下都不同。不过,我想说的是,如果您的订单足够大,可以容纳 100 件商品,那么您很少会想同时加载所有 100 件商品。
我建议您按需加载每个项目,允许您加载项目的“页面”或仅加载一个项目。例如,如果您需要列出所有项目,您可以加载该列表的“页面”,并且由于每个项目都可以按需加载,因此您只需加载所选页面即可。此外,为了提高性能,您可能希望回收这些对象,因此您可能会考虑构建 10 个 Ghost 项目,然后一次将一个“页面”加载到这 10 个项目中。
另一方面,由于项目是按需加载的,因此您可以只加载一个项目,这样您就可以仅在需要时显示该项目的完整详细信息。