この例では、以下のような HRDEPT.EMPLOYEE という簡単な表の定義が使用されます。
CREATE TABLE HRDEPT.EMPLOYEE( EMPNO CHAR(6) NOT NULL, FIRSTNME VARCHAR(12) NOT NULL, MIDINIT CHAR(1), LASTNAME VARCHAR(15), WORKDEPT CHAR(2), PHONENO CHAR(4), HIREDATE DATE, PRIMARY KEY(EMPNO))
この表に対応する Bean は以下のようになります。
public Employee { public String employeeId; public String firstName; public String middleInitial; public String lastName; public String departmentId; public String extension; public Date hireDate; }
この Bean のインスタンスは、サンプル・コードが表 HRDEPT.EMPLOYEE に挿入するレコード内の値を指定します。Bean を使用して SQL ステートメントに入力パラメーターを指定する場合、SQL ステートメント内のパラメーター・マーカーは、どの Bean プロパティーが SQL 内の各パラメーターに値を指定するかを pureQuery に指示します。したがって、たとえ Bean 内のプロパティーの名前と表内の列が一致しなくても、Bean の定義に @Column アノテーションを入れる必要はありません。pureQuery が、照会の結果を保持するようにこの Bean のインスタンスを作成する場合は、Bean の定義は各プロパティーに @Column アノテーションが必要になります。
アノテーション付きメソッドを使用してデータベース・オブジェクトを操作する場合、それらのメソッドを定義するインターフェースを定義し、pureQuery ジェネレーターを使用してそのインターフェースのインプリメンテーションを生成してから、インプリメンテーション・クラスにあるそれらのメソッドを呼び出すアプリケーションを作成する必要があります。
レコードを挿入するためのアノテーション付きメソッドを定義するインターフェースは、以下のようになります。
import com.company.Employee; public interface HumanResources { @Update(sql= "INSERT INTO HRDept.Employee(EMPNO, FIRSTNME, MIDINIT, LASTNAME, WORKDEPT, PHONENO, HIREDATE)" + "VALUES( :employeeId, :firstName, :middleInitial, :lastName, :departmentId, :extension, :hireDate)", int newEmployee( Employee newHire ); }
インターフェースは、SQL ステートメントの更新カウントを表す int を戻し、単一の Employee オブジェクトである newHire を使用するものとして、newEmployee() というメソッドを定義します。
インターフェースの @Update アノテーションは、newEmployee() メソッドが呼び出されたときに実行される SQL ステートメントを提供します。
HumanResources インターフェースのインプリメンテーションを生成した後で、それをアプリケーション内で以下のように使用できます。
Connection con = DriverManager.getConnection(...); 1 HumanResources hr = 2 DataFactory.getData( HumanResources.class, con ); Employee newCollegeHire = 3 new Employee("000010", "CHRISTINE", "I", "HAAS", "A00", "3978", new java.sql.Date(System.currentTimeMillis())); int oneCount = hr.newEmployee(newCollegeHire); 4
このコードは、以下のステップを実行します。
INSERT ステートメントをアプリケーションのソースで可視にする場合、インライン・プログラミング・スタイルを使用することができます。
アプリケーションで、Data インターフェースのインプリメンテーションで定義された、多重定義されたバージョンの update() メソッドを呼び出します。
アプリケーションは、以下のようになります。
Connection con = DriverManager.getConnection(...); 1 Data db = DataFactory.getData(con); 2 Employee newCollegeHire = 3 new Employee("000010", "CHRISTINE", "I", "HAAS", "A00", "3978", new java.sql.Date(System.currentTimeMillis())); int oneCount = db.update( 4 "INSERT INTO HRDept.Employee(EMPNO, FIRSTNME, MIDINIT, LASTNAME, WORKDEPT, PHONENO, HIREDATE) " + "VALUES(:employeeId, :firstName, :middleInitial, :lastName, :departmentId, :extension, :hireDate )", newCollegeHire );
このコードは、以下のステップを実行します。