【发布时间】:2012-05-30 19:07:30
【问题描述】:
我正在用 PHP 编写一个数据映射器,并试图弄清楚当我的域对象遵循类表继承时如何实现标识映射。
在我看来,问题在于身份映射不能保证数据在内存模型中只显示一次,因为分层对象依赖于分层数据。
例如,在我的数据库中,我有一个父表和一个子表。在我的域模型中,我有一个 Parent 类,并从它扩展了一个 Child 类。我可以同时实例化父对象和子对象,并将它们的身份记录在身份映射中,没有问题。如果客户端代码请求相同的 Parent 或 Child,我可以从我的缓存中返回它,而不是从数据库中返回,没有问题。
但是如果 Parent 和 Child 都与同一个父记录相关,会发生什么?即父表中的相同数据?我现在在内存中将该数据表示了两次,如果它在一个(或两个实例)中被修改,我可能会覆盖更改。
在我看来,身份映射需要遵循类似于域对象和映射器本身的层次结构,但是在这一点上它变得有点复杂。另外,我还有很多依赖映射需要考虑。
非常感谢任何想法/建议!
【问题讨论】:
标签: php design-patterns datamapper