2013-10-24 82 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

我可以做到這一點,但我不想重複相同代碼在不同的服務方法或服務類別中。無論如何,這個問題不是關於什麼是替代方案。問題是,是否有強烈的理由(或任何理由)不這樣做。我只想確定我們不是在這裏的綿羊:)如果不鼓勵,爲什麼? –