2012-01-11 140 views
2

我具有對應於數據庫中的表的數平原實體類的,有結構類似於爲:實現DAO類的正確方法?

package project.src.entities; 
public class ClassName{ 
/** variables */ 
private type var1; 
private type var2; 
/** ...variable ends */ 
/** Default constructor */ 
public ClassName(){ 
} 
/** Custom constructor */ 
public ClassName(type var1, type var2 /*, ... */){ 
this.var1 = var1; 
.. 
} 
/** follows getters and setters of all fields */ 
} 


現在我創建了一個新的包:

package project.src.dao; 

此包將包含所有通過JDBC與數據庫交互的方法。 如:

public class ClassNameDAO { 
    /** @return an object of ClassName of given id */ 
    public static ClassName getClassName(String id){ 
    . . . 
    return className; 
    } 
    /** @return an ArrayList<ClassName> of objects of ClassName */ 
    public static ArrayList<ClassName> getAllClassName(){ 
    . . . 
    return classNameList; 
    } 
    /* Similarly, methods add(ClassName className), update(id, newClassName) and delete(id) follows */ 
} 

現在我的問題是:

  1. 這是一個Swing應用程序執行的正確方法嗎?
  2. 建議一個更好的方式來實現DAO,例子受到熱烈歡迎?
  3. 我可以在DAO中擁有所有的static方法嗎?有什麼問題嗎?如果是,那麼爲什麼呢?
  4. 有什麼額外的你想指出?
    謝謝。


編輯: 找到正是我需要什麼Here ....謝謝@BalusC

回答

1

這基本上是正確的,但我不會用在DAO靜態方法。我也會有一個DAO接口和一個實現接口的DAO類。

不使用靜態方法的一個重要原因是可測試性。在某些時候,你會想要單元測試調用DAO方法的類;爲此,您需要模擬DAO類。你不能輕易地模擬有很多靜態方法的類。

將來,您可能希望爲某些DAO方法提供不同的實現。例如,您可能希望獲得某些特定於某個特定數據庫實現的SQL(例如Oracle提示),或者您可能希望將數據寫入文件系統或Web服務。如果您使用一個DAO接口和許多實現它的DAO類,那麼在一個應用程序中使用多個實現會更容易。

+0

謝謝......請您建議'DAOFactory'和'DAO Interface'實現... – Asif 2012-01-12 13:51:43

+0

對不起,我不確定你在問什麼。你是否仍然需要幫助,或者你的問題解決了? – 2012-01-12 21:00:45

+0

問題已解決,請參閱我的編輯問題,這是我想要的......謝謝 – Asif 2012-01-13 16:45:55