延迟加载相关域对象:存储密钥的位置/方式


Lazy Loading related Domain Objects: Where/How to store the key?

一旦我从数据库加载了一个域对象,我就拥有了它的一些相关对象的密钥。 例如,当我加载"组织"时,我知道相关"所有者"的 ID。

我希望 Owner 属性延迟加载,因为无法保证我会在请求或会话期间使用它。

因此,在我看来,组织对象可以:

  1. 具有所有者 ID 属性和所有者属性。 所有者属性将仅按需填充(使用 OwnerId 进行查找)。 在这种情况下,唯一的(小)挑战是保持两个属性同步;或
  2. 仅拥有所有者属性。 这最初将包含用于查找所有者的键(整数)。 如果调用了所有者,则该值将被所有者对象替换。 在这种情况下,(小)挑战是避免类型转换问题。

哪种方法最好? 为什么? 还是有其他方法? 我还缺少什么?

我正在使用PHP,带有域,映射器和服务层。 非常感谢您的想法!

我正在使用选项 1(见上文),效果很好。