在一对多数据库映射方案中,假设一个部门可以拥有多个员工,设计DAO层的最佳做法是什么?
我是否应该有一个通用DAO类来获取/设置部门对象并获取/设置员工对象或两个单独的DAO类DepartmentDAO和EmployeeDAO来分别获取/设置部门对象和员工对象?
答案 0 :(得分:0)
我会将其与部门的dao和Employee的另一个分开。我认为红旗是:你称之为合并道?
如果您的想法中没有立即出现清晰直观的名称,则可能是代码味道。如果这个名字没有突然出现,那肯定会让看看你代码的其他程序员感到困惑。为什么要把两件事情放在一起呢?
一些指导原则:
例如,如果是员工和承包商,我可能会更加相信将它们组合成一个通用的,但即便如此,我有可能将它们分开,除非我有充分的理由不这样做分开他们。
如果您的项目开始变得越来越大,有15或20个DAO,您可能最终决定转到一个DAO,但这是您可以做到下游的决定。那么也许你可以制作一个HumanResources DAO或类似的东西。这主要是为了防止过多的布线。
分离部门和员工几乎没有什么缺点,并且在维护代码的清晰度和易用性方面可能会有一些显着的提升。如果你有充分的理由,将来将它们结合起来并不难。
这是我的看法。
答案 1 :(得分:0)
实际上,在我看来,你需要至少3种不同的DAO:
DepartmentDAO
EmployeeDAO
EmployeeCollectionDAO
事情是 - 单个实体的映射和实体组的映射具有显着差异。因此,它们应该由不同的结构处理,否则您可能会违反SRP。
此外,Department
应与Employee
个实例的集合进行交互,而不是与每个实例分开进行。