2013-10-24 2 views
1

기본 질문이 있습니다.다른 DAO - DAO 종속성 내에서 DAO 호출 사용

나는 우려의 분리로 DAO를 만들었습니다. 각 DAO는 컨텍스트에서 BusinessObject에 중점을 둡니다. 내 질문에 다른 DAO 안에 하나의 DAO 메서드를 사용하는 것입니다. 나는 그것이 잘못되었다고 생각했지만 충분한 데이터 지원이 없다.

여기 상황이 있습니다.

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

EmpDAO 내부 DeptDAO를 사용하여 잘못 될 수있는 작업 아래의 구현

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) 

을 가지고있는 문제점은 무엇입니까? 아니면 다른 DAO 내부에서 DAO 호출을해서는 안되는 이유는 무엇입니까? 당신이 당신의 정보를 얻을 곳

감사 Amod는

+0

나는 당신의 접근 방식에 아무런 문제가 없다. –

+0

기술보다는 태도처럼 보입니다 (하나는 "디자인 패턴"이라고합니다). 필자가 생각하기에 DAO를 사용하면 중복 된 코드를 피할 수 있고 코드 조각을 단순화한다면 다른 DAO를 사용하는 것을 주저하지 않는다고 말할 수 있습니다. – Julien

+0

pls는 코드 구조로 가지 않습니다. 이들은 템플릿입니다. –

답변

0

모르겠어요. 이것이 매우 가증스러운 오류라고 말한 인용문을 제공해 줄 수 있습니까? 코드 일대 다 관계를 수작업으로 처리하는 방법이 될 수 있습니다.

이 정적을 만드는 데 더 많은 문제가 있습니다.

+0

왜 그가 정적 호출을한다고 가정합니까? 아마도 그는 관례를 존중하지 않고 대문자로 시작하는 회원 이름을 사용합니다. – LuGo

+0

DeptDAO.getId와 "new"가 표시되지 않기 때문에 ... – duffymo

+0

그건 Java 코드가 아닙니다 ... – LuGo

2

다른 DAO 내부에서 DAO를 호출하는 것은 바람직하지 않습니다. 왜 당신의 서비스가 그 일을하지 않습니까? 서비스 방법 등 :

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

그리고 EmpDAOgetEmps(deptName) 제거;

+0

나는 이것을 할 수 있지만 같은 것을 반복하고 싶지는 않습니다. 다른 서비스 방법 또는 서비스 클래스의 코드. 어쨌든, 문제는 대안이 무엇인가에 관한 것이 아닙니다. 문제는 강력한 이유 (또는 이유)가 없기 때문입니다. 나는 단지 우리가 여기 양이 아님을 확신하고 싶다. 낙심한다면, 왜? –