从数据库填充对象 - 您在哪里停止?

时间:2009-11-06 20:59:47

标签: upload object load properties nullable

从DB获取对象时,是否还应加载对象的属性?似乎有这些方法。

  • 创建格式良好,满载的对象。

Pro:无需检查属性是否已加载;它有。传递它,不要担心物体的某些部分不存在。

骗局:你在哪里停下来?如果一个对象有一个对象,并且该对象有一个对象,并且该对象有40个对象作为属性等等......你加载整个数据库吗?或者你在BLL中做出关于什么构成格式良好的对象并加载这些属性的决定?

  • 不要加载任何其他对象的属性。

Pro:快速,无需加载不必要的属性。

Con:必须不断编写代码以检查属性是否已填充。

  • 延迟加载:仅在首次使用时加载属性。

Pro / Con:不确定该怎么说这种方法。这看起来很直观。

还有其他方法吗?什么方法最好?

最后,那些可以为null的属性呢?例如,汽车可能没有PreviousOwner对象。你把它设置为null吗?一个空的PreviousOwner对象?那个属性是否属于另一个类呢?

1 个答案:

答案 0 :(得分:1)

你的问题没有简单的答案,因为这取决于你想要达到的目标。

看起来您期望从数据库加载或多或少完整的对象图(即,多个对象类型之间的关系以及存储在数据库中的对象本身)。

如果是这种情况,我会考虑使用我选择的语言方便的Object Relationship Mapper

关于加载了多少对象图,Apple CoreData系统使用的模型是尚未检索的对象被标记为有缺陷(他们将概念称为“错误” - 它在Limiting the Size of the Object Graph: Faulting中描述。是你自己描述的延迟加载概念的一个游戏。