首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVC中的单DAO还是多DAO?

MVC中的单DAO还是多DAO?
EN

Stack Overflow用户
提问于 2013-07-23 16:40:38
回答 2查看 1.5K关注 0票数 2

在一对多的数据库映射场景中,假设一个部门可以有多个员工,那么设计DAO层的最佳实践是什么?

我应该有一个泛型DAO类来获取/设置部门对象和获取/设置employees对象,还是分别有两个单独的DAO类DepartmentDAO和EmployeeDAO来获取/设置部门对象和employee对象?

EN

回答 2

Stack Overflow用户

发布于 2013-07-23 16:44:07

我会把它分开,用刀给部门,另一个给员工。我想红旗是:你怎么称呼组合刀?

如果一个清晰直观的名字没有立即出现在你的脑海中,那就是一种潜在的代码气味。如果你的名字不跳出来,那肯定会让看你代码的其他程序员感到困惑。为什么要把两个截然不同的东西粘在一起呢?

一些准则:

  1. 例如,如果是雇员和承包商,我可能会更有信心地将它们合并成一个通用的,但即便如此,我也有可能将它们分开,除非我有充分的理由不将它们分开。
  2. 如果您的项目以15或20个DAO开始变得很大,您可能最终决定使用一个DAO,但这是您可以在下游做出的决定。也许你可以做一个HumanResources刀之类的东西。这主要是为了防止过多的布线。

将部门和员工分开几乎没有什么坏处,而且在清晰性和维护代码的易用性方面也可能有显著的提高。如果你有充分的理由的话,将来把它们结合起来并不难。

这就是我的想法。

票数 0
EN

Stack Overflow用户

发布于 2013-07-23 16:50:21

实际上,在我看来,你至少需要三个不同的道斯:

  • DepartmentDAO
  • EmployeeDAO
  • EmployeeCollectionDAO

事物是--单个实体的映射与实体组的映射有显着性差异。因此,它们应该由不同的结构来处理,否则就有违反SRP的风险。

另外,Department应该是与Employee实例的集合进行交互,而不是单独地与每个实例交互。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17816099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档