【发布时间】:2009-10-23 11:04:37
【问题描述】:
我正在研究我的应用程序模型层的编程/设计模式,并且想知道哪种模式最适合您进行涉及跨多个表连接的检索的情况。
例如,假设您有以下表格/关系:客户 --> 1..n 帐户 --> 0..n 特征
其中一项功能可以是支票簿,也可以是一些高级产品,例如免费旅行保险。
然后我想做 getCustomersForFeature() 来检索所有拥有免费旅行保险帐户的客户。
似乎不适合使用 ActiveRecord 或数据访问对象,因为它们通常只关注每个表一个类;数据映射器也是如此。我意识到我可以将其分解为每个表的操作,例如getAccountsForFeature() 和 getCustomersForAccount(),但我想一键检索。
如果我们要“弯曲”每个表一个类的模式并使用数据访问对象模式,比如说,getCustomersForFeature() 方法应该继续使用 CustomerDAO 还是 FeatureDAO?但这对我来说感觉不对,因为你会用其他表的知识污染你的 DAO。
请提出建议。
【问题讨论】:
-
我已经为这个问题添加了一个社区 Wiki 答案,它根据此处的答案和附加阅读总结了我认为的可用方法。这丝毫没有减损这里的其他答案,但这是我一直在寻找的面向模式的方法,其中包括聚合的想法。我犹豫选择它作为“接受的答案”(我可以对自己的答案这样做吗?),直到它受到更多审查。
标签: design-patterns database-design join