データ・アクセス・オブジェクト (DAO) インターフェースとアノテーション付きメソッドの概要

アノテーション付きメソッドを作成する場合、独自のインターフェースで定義しているメソッドのアノテーションで、SQL 照会、update ステートメント、または CALL ステートメントをコーディングすることができます。 データ・アクセス・オブジェクト (DAO) インターフェースは、アノテーション付きメソッドを使用して定義することができます。

アノテーション付きメソッドを使用することの利点は以下のとおりです。

カスタム・インターフェースにおけるメソッドのアノテーションでの SQL の定義

データ・アクセス・オブジェクトを作成するインターフェースを記述することによって、データ・アクセス・オブジェクト (DAO) パターンに準拠したカスタム・インターフェースを作成することができます。 インターフェースの作成が完了したら、pureQuery Generator ユーティリティーを実行して、インターフェースを実装するクラスの定義を生成できます。 アプリケーション用にコードを書く際には、このインプリメンテーション・クラスのインスタンスを作成してから、そのインスタンス内に実装されているメソッドを呼び出すことができます。 パラメーターをメソッドに提供して照会の結果を受け取るために、Java オブジェクト、Bean、およびコレクションを使用できます。

例えば、以下のメソッドは @Select アノテーションを使用し、CustomerQuery というインターフェース内に出現することができます。このインターフェースでは、CUSTOMER という表のレコードの照会または更新を行うためのメソッドを定義します。

@Select(sql="SELECT CUSTID, NAME FROM CUSTOMER WHERE REGION = ?1") 
List<Customer> getCustomersInRegion(int r);

このインターフェースをコンパイルし、pureQuery Generator ユーティリティーを使用して、このインターフェースを実装する CustomerQueryImpl というクラスを作成すると、アプリケーションではこのメソッドを呼び出して、返された List から照会結果を取得できます。

Connection con = DriverManager.getConnection(...);
CustomerQuery cQuery = DataFactory.getData(CustomerQuery.class, con);

int region = 123;

List<Customer> customersInRegion = cQuery.getCustomersInRegion(region);

このコードは、以下のステップを実行します。

  1. データベースへの接続を作成します。
  2. CustomerQuery のインスタンスを作成します。
  3. 変数 region を作成および初期化します。
  4. cQuery.getCustomersInRegion() メソッドを呼び出し、結果を Customer オブジェクトの新規の List に渡します。

このコードは、インプリメンテーション・クラスではなく CustomerQuery インターフェースを直接参照することに注意してください。 インプリメンテーション・クラスに対する従属関係が生成されることなく、アプリケーションをコンパイルすることができます。

XML ファイルでの SQL の定義

XML ファイルを使用して、インターフェースで定義されるメソッドのアノテーション内の SQL ステートメントをオーバーライドすることができます。インターフェースのインプリメンテーション・クラスを生成する際に、SQL ステートメントを XML ファイルに提供し、そのファイルを pureQuery Generator ユーティリティーに提供します。このようにして、複数のアプリケーションが別のデータベースと関連付けられている場合、それらのアプリケーションでインターフェースを再利用することができます。

例えば、DB2 データベースで機能する 1 つのアプリケーションと、Oracle データベースで機能する同様のアプリケーションを所有することができます。Customer というインターフェースには、DB2 データベースと互換性のある SQL ステートメントを含めることができます。このインターフェースを 2 番目のアプリケーションで再利用するためには、Customer インターフェースのインプリメンテーション・クラスの生成時に、Oracle データベースと互換性のある SQL ステートメントが含まれた XML ファイルを pureQuery Generator ユーティリティーに提供します。


フィードバック