2

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

我应该使用一个通用 DAO 类来获取/设置部门对象和获取/设置员工对象,还是使用两个单独的 DAO 类 DepartmentDAO 和 EmployeeDAO 来分别获取/设置部门对象和员工对象?

4

2 回答 2

0

实际上,在我看来,您至少需要 3 个不同的 DAO:

  • DepartmentDAO
  • EmployeeDAO
  • EmployeeCollectionDAO

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

此外,Department应该与Employee实例集合交互,而不是单独与每个实例交互。

于 2013-07-23T16:50:21.150 回答
0

我会用一个 dao 来区分 Department 和另一个 Employee 。我认为红旗是:你会怎么称呼合道?

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

一些指导方针:

  1. 例如,如果是 Employee 和 Contractor,我可能会更加相信将它们组合成一个泛型,但即便如此,我还是有可能将它们分开,除非我有充分的理由不分开它们。

  2. 如果您的项目开始变得庞大,有 15 或 20 个 DAO,您可能最终决定使用一个 DAO,但这是您可以在下游做出的决定。然后也许你可以创建一个 HumanResources DAO 或类似的东西。这主要是为了防止接线过多。

将部门和员工分开几乎没有什么坏处,而且在代码的清晰度和易于维护方面可能会有一些显着的收益。如果您有充分的理由,将来将它们结合起来并不难。

这是我的看法。

于 2013-07-23T16:44:07.887 回答