2012-01-11 14 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. 余計に何かを指摘したいですか?
    ありがとうございました。


EDIT: 私はHere必要正確に何が見つかりました....おかげ@BalusC

答えて

1

は、これは私がDAOの静的メソッドを使用しないことを除いて、基本的権利です。私はまた、DAOのインターフェイスと、インターフェイスを実装するDAOクラスを持っています。

静的メソッドを使用しない重要な理由の1つは、テスト容易性です。ある時点で、DAOメソッドを呼び出すクラスを単体テストする必要があります。このために、あなたはDAOクラスを模擬したいでしょう。多くの静的メソッドを持つクラスを簡単にモックすることはできません。

今後、いくつかのDAOメソッドに異なる実装を提供することができます。たとえば、特定のデータベース実装(Oracle Hintなど)に固有のSQLを使用するか、ファイル・システムまたはWebサービスにデータを書き込むことができます。 1つのDAOインターフェイスとそれを実装する多くのDAOクラスを使用する場合、1つのアプリケーション内で複数の実装を使用する方が簡単です。

+0

ありがとうございます。あなたは 'DAOFactory'と' DAO Interface'の実装をお勧めしますか? – Asif

+0

申し訳ありませんが、私はあなたが何を求めているのか分かりません。それでも助けが必要ですか、それともあなたの問題は解決していますか? –

+0

問題が解決しました。問題の私の編集を参照してください、それは私が望むものです...ありがとう – Asif

関連する問題