複数の SQL ステートメントから、pureQuery コードを使用するデータ・アクセス・オブジェクトまたはインライン・メソッドを生成できます。ステートメントはワークベンチの SQL スクリプト内、またはファイル・システムのスクリプト・ファイル内に配置できます。
このタスクについて
ライセンス構成によってはこの機能は使用できない可能性があります。
「Java」パースペクティブの pureQuery 対応の Java プロジェクト内の SQL スクリプト、および「SQL およびルーチン開発」パースペクティブのデータ開発プロジェクト内の SQL スクリプトを処理できます。SQL および XQuery エディターで開いた SQL スクリプトを処理することも、
スクリプト・ファイルの SQL ステートメントをインポートすることもできます。
SQL スクリプトには 1 つ以上の SQL ステートメントを入れることができます。
スクリプトに含まれる SQL ステートメントの数、またはユーザーの選択するステートメントの数により、
pureQuery コードの生成に使用するウィザードが左右されます。
単一の SQL ステートメントが入ったスクリプト、および単一の SQL ステートメントを選択するスクリプトについては、『単一の SQL ステートメントからの pureQuery コードの生成』を参照してください。
この処理を使用して pureQuery コードを生成できるのは、有効な SELECT、INSERT、UPDATE、DELETE、または CALL ステートメントに関してのみです。SQL ステートメントの JDBC prepareStatement() メソッドでエラーが発生すると、メッセージ・ボックスに、返されたエラー・メッセージが表示されます。
手順
複数の SQL ステートメントから pureQuery コードを生成するには、以下のようにします。
- 以下のどちらかの手順を実行することにより、「SQL ステートメントからの pureQuery コードの生成」ウィザードを開きます。
オプション |
説明 |
SQL および XQuery エディターで開いた SQL スクリプトに入っている SQL ステートメントの場合。 |
- オプション: スクリプト内の SQL ステートメントの一部にのみ pureQuery コードを生成する場合には、
全体で該当する各ステートメントを選択します。
ステートメントを選択しないと、すべての SQL ステートメントに対して pureQuery コードが生成されます。
- 選択した SQL ステートメントを右クリックするか、ステートメントを選択しなかった場合には、
エディターの任意の場所を右クリックし、「pureQuery コードの生成」を選択します。
|
pureQuery 対応の Java プロジェクトの SQL スクリプト内の SQL ステートメントの場合。 |
- Java パースペクティブに切り替えます。
- SQL ステートメントの入ったプロジェクトで .sql ファイルを右クリックし、「pureQuery コードの生成」をクリックします。
|
SQL ステートメントがデータ開発プロジェクトの SQL スクリプトに入っている場合は、以下のようにします。 |
- 「SQL およびルーチン開発」パースペクティブに切り替えます。
- プロジェクトの「SQL スクリプト」フォルダーを展開します。
- SQL ステートメントの入ったスクリプトを右クリックし、「pureQuery コードの生成」を選択します。
|
SQL ステートメントがファイル・システムのスクリプト・ファイルに入っている場合は、以下のようにします。 |
- を選択します。
- 「新規」ウィザードで、「データ」ノードを展開し、「pureQuery アノテーション・メソッド・インターフェース」を選択してから、「次へ」をクリックします。
|
- 「pureQuery コードの生成」ページで情報を指定し、「次へ」をクリックします。 ワークベンチの SQL スクリプトからウィザードを開いた場合、「SQL ステートメント」ページの「ステートメント」リストに、スクリプト内の SQL ステートメントが追加されます。
- ファイル・システムのスクリプト・ファイルから SQL ステートメントをインポートするには、以下のようにします。
- ファイル内の SQL ステートメントが使用する終止符を指定します。
- 「インポート」をクリックし、スクリプト・ファイルを選択します。
- オプション: リスト内の Bean またはメソッドの名前を変更するには、変更する名前をダブルクリックし、新規名を入力します。 Bean の名前を変更する場合、それに対応するメソッドのデフォルト名が、新しい Bean 名に合わせて更新されます。
- オプション: SQL SELECT ステートメントが含まれる場合、リストで SELECT ステートメントをクリックし、生成される Bean の情報を検討および編集し、
次に「詳細」をクリックします。
- オプション: SQL CALL ステートメントが含まれる場合、リストで CALL ステートメントをクリックすることで、生成されるメソッドで使用するカスタム呼び出しハンドラーを検討および編集して、
次に「詳細」をクリックします。
- ウィザードのステップを完了します。 ウィザード内のフィールドに関する情報を表示するには、F1 を押します。
- 「完了」をクリックして指定したファイルを生成します。
タスクの結果
pureQuery コードを生成すると、ワークベンチによって、データベースへのアクセスに使用できる Bean が作成されます。例えば、UPDATE ステートメントまたは SELECT ステートメントからコードを生成できます。SELECT ステートメントからコードを生成した場合には、照会結果を保持するために使用可能な Bean がワークベンチによって作成されます。
結合または Union を生成する SELECT ステートメントまたは計算された列を含む SELECT ステートメントで AS 節を使用しなければ、照会結果には名前が固有ではない列が含まれる可能性があります。
照会結果を示す Bean の生成時にワークベンチがこの問題を解決できるかどうかは、アプリケーションで使用するデータベースのタイプに依存します。
- DB2® for Linux, UNIX,
and Windows、
DB2 for z/OS®、
Informix® Dynamic Server の場合: ワークベンチは、1 つ以上の他の列と同じ名前を持つ列にマップされる、
プロパティーの @Column アノテーションを使用します。
例えば、アプリケーションで以下の単純な照会を実行するものとします。
select a.col1, b.col1 from a, b where a.id=b.id;
照会結果を保持する Bean 内の対応するプロパティーの
set() メソッドには、以下に示すように、
2 つの
id 列が存在する表の名前を提供する
@Column アノテーションが必要です。
public class JoinExample{
private int a_id;
private int b_id;
@Column (name="id", table="a")
public void setA_id (int a_id)
{
this.a_id = a_id;
}
public int getA_id ()
{
return a_id;
}
@Column (name="id", table="b")
public void setB_id (int b_id)
{
this.b_id = b_id;
}
public int getB_id ()
{
return b_id;
}
}
- Oracle の場合: ワークベンチは、問題のある列を Bean 内のプロパティーにマップする目的では、@Column アノテーションの table 属性を使用しません。
以下のいずれかの方法を使用して、それらの列をマップする必要があります。
- SELECT ステートメントの AS 節を使用して、照会結果の列に固有名を割り当てる。
- 名前ではなく、索引番号によって照会結果の列を処理できる RowHandler を使用する。『RowHandler <ROW> インターフェース』を参照してください。