2013-10-24 65 views
1

我有一个基本问题。在另一个DAO中使用DAO调用 - DAO依赖关系

我一直在创建与分离关注的DAO。每个DAO都集中在上下文中的BusinessObject上。我的问题是在另一个DAO中使用一个DAO方法。我认为这是错误的,但没有足够的数据支持。

这是情况。

EmpDAO: 
    getEmp(empId) 
    getEmps(deptId) 
    getEmps(deptName) 

什么是具有以下实施

getEmps(deptName): 
    // Assume this is cached and there is no question of two N/w calls and having any gain by joins 
    DeptDAO.getId(deptName) 
    getEmps(deptId) 

可以去什么错误使用DeptDAO内EmpDAO的问题是什么?或者有什么要点,因为我不应该在另一个DAO中使用DAO调用。

问候 阿莫德

+0

我没有看到你的方法有什么问题。 –

+0

它看起来像哲学而不是技术(人们会说“设计模式”;)。就我而言,我可以说,对于一个给定的DAO,如果它允许避免重复代码,并且它简化了代码段,我会毫不犹豫地使用其他DAO(s)。 – Julien

+0

请不要走代码结构这些是模板。 –

回答

0

我不知道你在何处获得信息。你能否提供一个引用,告诉你这是一个很糟糕的错误?这可能是一种手动编码一对多关系的方式。

我有更多的问题,使这些静态。

+0

为什么你认为他在静态调用?也许他只是不尊重约定,并使用以大写字母开头的成员名称。 – LuGo

+0

由于DeptDAO.getId和我没有看到“新”... – duffymo

+0

这不是Java代码... – LuGo

2

不鼓励在另一个DAO内调用DAO。为什么你的服务不能完成这项工作?服务方法,如:

public void combinedServiceWork(String deptName) { 
    long deptId = DeptDAO.getId(deptName); 
    EmpDAO.getEmps(deptId); 
} 

而且在EmpDAO摆脱getEmps(deptName);

+0

我可以做到这一点,但我不想重复相同代码在不同的服务方法或服务类别中。无论如何,这个问题不是关于什么是替代方案。问题是,是否有强烈的理由(或任何理由)不这样做。我只想确定我们不是在这里的绵羊:)如果不鼓励,为什么? –