Generator ユーティリティー

pureQuery Generator ユーティリティーは、アノテーション付きメソッドを宣言するインターフェースにインプリメンテーション・クラスを生成します。

このトピックには以下のセクションが含まれています。

図で使用される規則を理解するには、構文図の読み方を参照してください。

概説

pureQuery Generator ユーティリティーでは、使用する Eclipse 環境、およびインプリメンテーション・クラスの生成時に使用するデータベース、JDBC ドライバー、インターフェースをそれぞれ指定するパラメーターが必要になります。

このジェネレーターは、入力インターフェース・ファイルの内容を分析し、@Select、@Update、および @Call アノテーションで参照されるデータ・オブジェクトを照会または更新する Java コードを作成します。 ジェネレーターは、照会操作でターゲット Bean にデータを追加し、その Bean の内容を更新操作で入力データとして使用するコードを生成します。

多くの場合、pureQuery ユーザーはワークベンチを使用してアプリケーションを作成します。この環境においては、pureQuery サポートが有効な Java プロジェクトに含まれているすべての pureQuery アノテーション付きメソッド・インターフェースに対して、pureQuery ジェネレーターが自動的に起動します。 Java プロジェクトの通常の構築プロセスの一部として、インターフェースのインプリメンテーションが生成されます。

ただし、pureQuery ジェネレーターはコマンド行からも起動できます。IBM® Data Studio Developer または IBM Optim™ Development Studio をインストールしていなければなりません。これらの 2 つの製品のうちどちらをインストールしているかに応じて、Generator ユーティリティーの実行時には、システム・クラスパスか JVM クラスパスのどちらかに以下の .jar ファイルを組み込まなければなりません。

Generator ユーティリティーは、Data Studio Developer または Optim Development Studio を起動しません。これらの製品が提供するインフラストラクチャーやプラグインを利用するだけです。

オプション・ファイル

オプション・ファイルは、pureQuery ジェネレーター・ユーティリティーで処理する単一または複数のインターフェース、およびインターフェースを処理する方法をジェネレーターに指示するオプションをリストします。 オプション・ファイルにリストしたすべてのインターフェースに適用するデフォルト・オプションを設定できます。 また、デフォルト・オプションをオーバーライドするためにインターフェースのオプションを設定したり、個々のインターフェースに固有の他のオプションを設定したりすることもできます。

ジェネレーターを実行するコマンドでは、-optionsFile オプションを指定して、使用するファイルを指定できます。

例えば、pureQuery ジェネレーターの単純なオプション・ファイルは以下のようになります。
defaultOptions = -driverName com.ibm.db2.jcc.DB2Driver -url jdbc:db2://SRVR01:50000/DB01 -username user01 -password passw0rd
com.myCompany.MyInterfaceA = -collection NULLID
com.myCompany.MyInterfaceB = -collection COLL01 -xmlFile C:¥overrides¥myInterfaceB_sql2.xml
com.myCompany.MyInterfaceC = -url jdbc:db2://SRVR01:50001/DB02 -username user02 -password pass02 
この例の defaultOptions から始まる行では、 データベースへの接続時に使用するドライバー、データベースに接続するための URL、およびユーザー名とパスワードが指定されています。 これらの設定は、このオプション・ファイルに存在するすべてのインターフェースに適用されます。 最初の 2 つのインターフェースに固有の行では、そのインターフェースにのみオプションが設定されます。
また、オプション・ファイルにはコメントを含めることもできます。その場合は、各コメント行を # 記号で開始します。 オプションのいずれかの値でこの記号を使用する必要がある場合には、以下に示すように、値を二重引用符で囲みます。
-pkgVersion "ver#1"
コマンド行からジェネレーターを実行して、 オプション・ファイルを使用した場合には、pureQuery は以下の順序の優先順位でオプションを認識します。
  1. コマンド行のオプション
  2. 指定されたオプション・ファイル内の個々のインターフェースのオプション
  3. 指定されたオプション・ファイルのデフォルト・オプション

オプション・ファイルを使用しない場合に Generator ユーティリティーを実行するためのコマンドの構文

指定するインターフェースすべてで同じオプションを使用する場合には、このコマンドのみを使用することを選択できます。

構文図を読む構文図をスキップする
                                                                                    (1)   
>>-java--org.eclipse.core.launcher.Main-- -application--com.ibm.pdq.tools.Generator------>

>-- -data--temporary-workspace-- -driverName--JDBC-driver------->

>-- -url--connection-URL-- -username--user-ID-- -password--password-->

>--+------------------------+-- -rootPath--root_path------------>
   |              .-FALSE-. |                          
   '- -noCleanup--+-TRUE--+-'                          

>--+----------------------------+------------------------------->
   '- -userClasspath--classpath-'   

>--+-----------------------------------+------------------------>
   |               .-NULLID----------. |   
   '- -collection--+-collection-name-+-'   

>--+--------------------------------+--------------------------->
   '- -pkgVersion-- -+-AUTO-------+-'   
                     '-version-ID-'     

>--+----------------------------------+------------------------->
   '- -rootPkgName--package-name-stem-'   

>--+---------------------------------------+-------------------->
   |                             .-FALSE-. |   
   '- -forceSingleBindIsolation--+-TRUE--+-'   

>--+---------------------+--+-----------------------+----------->
   '- -xmlFile--XML-file-'  |                   (2) |   
                            '-| Trace options |-----'   

                .------------------------------.   
                V                              |   
>-- -interface----Java-package.interface.class-+---------------->

>--+---------------------------------------------+-------------><
   '- -baseDataOverride--Java-package.class-name-'   

注:
  1. オプションは任意の順序で指定できます。
  2. 構文については、以下のオプションの説明を参照してください。

オプション・ファイルを使用する場合に Generator ユーティリティーを実行するためのコマンドの構文

オプション・ファイルを使用して、DB2® パッケージまたは DBRM ファイルを作成するためのインターフェースとオプションの名前を指定できます。 オプション・ファイルを使用すると、異なるインターフェースに別々のオプションを指定できます。

ワークベンチを使用する場合、(Default.genProps ファイルなどの) オプション・ファイル内に、個別にオプションを指定するインターフェースだけをリストできます。defaultOptions 行は、Java プロジェクト内にあるインターフェースすべてに適用されます。

構文図を読む構文図をスキップする
                                                                                    (1)   
>>-java--org.eclipse.core.launcher.Main-- -application--com.ibm.pdq.tools.Generator------>

>-- -data--temporary-workspace-- -driverName--JDBC-driver------->

>-- -url--connection-URL-- -username--user-ID-- -password--password-->

>-- -optionsFile--file-name--+------------------------+--------->
                             |              .-FALSE-. |   
                             '- -noCleanup--+-TRUE--+-'   

>-- -rootPath--root_path--+----------------------------+-------->
                          '- -userClasspath--classpath-'   

>--+-----------------------+-----------------------------------><
   |                   (2) |   
   '-| Trace options |-----'   

注:
  1. オプションは任意の順序で指定できます。
  2. 構文については、以下のオプションの説明を参照してください。

残りの 2 つの構文図は、オプション・ファイル内で項目を作成する方法を説明しています。

Generator ユーティリティーのオプション・ファイルにデフォルト・オプションを指定するための構文

この構文図は、オプション・ファイルにリストされているすべてのインターフェースに設定できるデフォルト・オプションを示しています。

構文図を読む構文図をスキップする
                     (1)                              
>>-defaultOptions--=------ -driverName--JDBC-driver------------->

>-- -url--connection-URL-- -username--user-ID-- -password--password-->

>--+------------------------+-- -rootPath--root_path------------>
   |              .-FALSE-. |                          
   '- -noCleanup--+-TRUE--+-'                          

>--+----------------------------+--+-----------------------+---->
   '- -userClasspath--classpath-'  |                   (2) |   
                                   '-| Trace options |-----'   

>--+-----------------------------------+------------------------>
   |               .-NULLID----------. |   
   '- -collection--+-collection-name-+-'   

>--+--------------------------------+--------------------------->
   '- -pkgVersion-- -+-AUTO-------+-'   
                     '-version-ID-'     

>--+---------------------------------------+-------------------->
   |                             .-FALSE-. |   
   '- -forceSingleBindIsolation--+-TRUE--+-'   

>--+---------------------+-------------------------------------->
   '- -xmlFile--XML-file-'   

>--+---------------------------------------------+-------------><
   '- -baseDataOverride--Java-package.class-name-'   

注:
  1. オプションは任意の順序で指定できます。
  2. 構文については、以下のオプションの説明を参照してください。

Generator ユーティリティーのオプション・ファイル内でデフォルト・オプションをオーバーライドするための構文

この構文図は、オプション・ファイルにリストされている各インターフェースに設定できるオプションを示しています。

構文図を読む構文図をスキップする
                             (1)                              
>>-Java-package.interface--=------ -driverName--JDBC-driver----->

>-- -url--connection-URL-- -username--user-ID-- -password--password-->

>--+-----------------------------------+------------------------>
   |               .-NULLID----------. |   
   '- -collection--+-collection-name-+-'   

>--+--------------------------------+--------------------------->
   '- -pkgVersion-- -+-AUTO-------+-'   
                     '-version-ID-'     

>--+----------------------------------+------------------------->
   '- -rootPkgName--package-name-stem-'   

>--+---------------------------------------+-------------------->
   |                             .-FALSE-. |   
   '- -forceSingleBindIsolation--+-TRUE--+-'   

>--+---------------------+-------------------------------------->
   '- -xmlFile--XML-file-'   

>--+---------------------------------------------+-------------><
   '- -baseDataOverride--Java-package.class-name-'   

注:
  1. オプションは任意の順序で指定できます。

オプションの説明

-baseDataOverride Java-package.class-name
生成されるインプリメンテーション・クラスが拡張する Java クラスの名前を指定できるようにします。 デフォルトでは、生成されるインプリメンテーション・クラスは、クラス com.ibm.pdq.runtime.generator.BaseData を拡張します。 独自のクラスを指定することにより、生成されるインプリメンテーション・クラスを独自のメソッドを使用して拡張できます。
-collection collection-name
このオプションは、静的 SQL を使用したアプリケーションの開発をサポートしており、StaticBinder ユーティリティーを後から実行する場合に使用します。 このオプションは、pureQuery StaticBinder ユーティリティーがバインドするパッケージの修飾子を指定します。 修飾子は、使用している DB2 データベースのコレクション名の制約を満たしている必要があります。
このパラメーターを指定しない場合、値のデフォルトは NULLID です。
-data path
使用するジェネレーター・ユーティリティーの一時 Eclipse ワークスペースの絶対パスを指定します。
-driverName name
データベースに接続するために使用する JDBC ドライバーの名前。
-forceSingleBindIsolation TRUE|FALSE
単一の分離レベルでのみ DB2 パッケージを作成し、分離レベルを示す数字をパッケージ名に付加しないかどうかを指定します。 デフォルト値は FALSE で、数字標識が付加されます。
このオプションは、StaticBinder ユーティリティーの -isolationLevel オプションとともに使用します。

-isolationLevel オプションを使用して単一のステートメント・セットを 2 つまたは 3 つの異なるパッケージに、それぞれ異なる分離レベルでバインドする場合、ステートメント・セットが含まれる pureQueryXML ファイルに対して構成ユーティリティーを実行するときは -forceSingleBindIsolation オプションを使用しないでください。

例えば、StaticBinder ユーティリティーのオプション・ファイルに、次の 2 つの項目を組み込んだとします。

C:/dir/captureFile.pdqxml:MYPKGA = -isolationLevel UR
C:/dir/captureFile.pdqxml:MYPKGA = -isolationLevel CS

構成ユーティリティーを captureFile.pdqxml ファイルに対して実行するときに -forceSingleBindIsolation オプションを使用した場合、StaticBinder ユーティリティーは次のアクションを実行します。

  1. UR 分離レベルでパッケージ MYPKGA をバインドします。
  2. CS 分離レベルでパッケージ MYPKGA を再バインドします。

結果として、単一の MYPKGA パッケージは、CS 分離レベルでバインドされます。

バインドの結果が 2 つの MYPKGA パッケージ (1 つは UR 分離レベル、もう 1 つは CS 分離レベルのもの) となるようにする場合は、captureFile.pdqxml に対して構成ユーティリティーを実行するときに -forceSingleBindIsolation オプションを使用しないでください。

-interface java-package.interface-class
pureQuery ジェネレーター・ユーティリティーでインプリメンテーション・クラスを作成するときの、コンパイルされるインターフェースの名前。 名前は、クラスが存在する Java パッケージの名前で完全修飾する必要があります。
Java-package.interface (オプション・ファイルの行の先頭で)
指定したインターフェースに入っている SQL ステートメントにのみこの行のオプションが適用されることを指定します。 これらのオプションは、デフォルトとして指定したオプションをオーバーライドします。
インターフェースの名前は、インターフェースが所属する Java パッケージの名前で修飾する必要があります。
-noCleanup TRUE|FALSE
指定した Eclipse ワークスペースに pureQuery ジェネレーター・ユーティリティーが Java プロジェクトを作成する必要がある場合、 このオプションは、インプリメンテーションの生成後に pureQuery ジェネレーター・ユーティリティーが Java プロジェクトを削除するかどうかを指定します。
TRUE
pureQuery ジェネレーター・ユーティリティーは Java プロジェクトを削除しません。
FALSE
pureQuery ジェネレーター・ユーティリティーは Java プロジェクトを削除します。これはデフォルト値です。
-optionsFile file-name
インプリメンテーション・クラスを生成するインターフェースをリストするファイルの名前 (絶対パスまたは相対パスを含む)。
オプション・ファイルには、デフォルト・オプション・セット、インターフェースのリスト、および各インターフェースのオプション・セットを含めることができます。 オプション・ファイルを指定した場合に、コマンド行でもオプションを指定できます。 デフォルト・オプションとして指定されたオプションは、インターフェース用にリストされたオプションまたはコマンド行で指定されたオプションによってオーバーライドされていない限り、 そのインターフェースで使用されます。
-password password
データ・ソースに接続するために使用するパスワード。
-pkgVersion AUTO|version-ID
このオプションは、静的 SQL を使用したアプリケーションの開発をサポートしており、StaticBinder ユーティリティーを後から実行する場合に使用します。 このオプションは、パッケージをバインドするときに使用するパッケージ・バージョンを指定します。

DB2 では複数のバージョンのパッケージを同時に存在させることができるため、古いバージョンのパッケージを置換することなく、同名の新しいパッケージをバインドできます。 新しいパッケージで問題が発生した場合には、そのパッケージの古いバージョンを使用できます。

このオプションを指定しなかった場合には、それ以降のバインドで作成されるデータベース・パッケージは、バージョンなしで作成されます。

AUTO
現在のタイム・スタンプを使用してバージョン ID を自動的に生成することを指定します。バージョン ID には単一のタイム・スタンプが使用されます。
version-ID
パッケージのバージョン ID を指定します。ストリングは、使用している DB2 のバージョンで有効なものにする必要があります。

実行時のバージョンの検査は、バージョン名ではなく整合性トークンに基づいて行われます。

-rootPkgName package-name-stem
このオプションは、静的 SQL を使用したアプリケーションの開発をサポートしており、StaticBinder ユーティリティーを後から実行する場合に使用します。 このオプションは、DB2 パッケージに使用する名前の語幹を指定します。 パッケージを作成してバインドする際に、分離レベルを示す数字がこの名前に付加されます。 パッケージには完全な名前 (名前の語幹 + 分離レベルを示す数字) が付けられます。 package-name-stem は、使用している DB2 データベースで設定された制約の範囲内である必要があります。

pureQuery StaticBinder ユーティリティーを使用して、 DB2 パッケージを作成するのではなく、DBRM ファイルを生成する場合には、 package-name-stem は、最長で 7 文字までの大文字にする必要があります。 StaticBinder ユーティリティーを使用して DBRM ファイルを生成し、 package-name-stem に分離レベルの追加文字を加えたストリングが 7 文字より長い場合には、 StaticBinder ユーティリティーは例外をスローします。

パッケージ名は単一のデータベース内で固有である必要があります。そのため、複数のインターフェースに対して単一のルート・パッケージを指定することはできません。 コマンド行で、インターフェースをちょうど 1 つ指定した場合には、ルート・パッケージ名を指定できます。 また、オプション・ファイルでもインターフェースのルート・パッケージ名を指定できますが、defaultOptions 行の一部としては指定できません。

-rootPath root-path
ジェネレーター・ユーティリティーで処理するインターフェースが入ったディレクトリーへの絶対パス。

例えば、ディレクトリーは C:¥user¥app1¥ などです。 Java パッケージに対応するディレクトリーはこのディレクトリー内になります (例: C:¥user¥app1¥com¥myCompany¥)。

ジェネレーター・ユーティリティーの -interface オプションを使用して、 ユーティリティーで処理するインターフェースの名前を指定します。この名前は、パッケージの名前で修飾します (この例では、com.myCompany.MyInterface のようにします)。

インターフェースはコンパイルできる必要があります。

ジェネレーター・ユーティリティーは、対応するインターフェースと同じディレクトリーにインプリメンテーション・クラスを生成します。 そのため、各インプリメンテーション・クラスは、インターフェースと同じ Java パッケージ内に作成されます。

-rootPath を C:¥user¥app1¥ に設定し、-interface を com.myCompany.MyInterface に設定して pureQuery ジェネレーター・ユーティリティーを実行すると、 このユーティリティーは、ディレクトリー C:¥user¥app1¥com¥myCompany¥ にクラス MyInterfaceImpl.java を生成します。 クラスの完全修飾名は、com.myCompany.MyInterfaceImpl です。

-rootPath オプションを使用しなかった場合には、pureQuery ジェネレーター・ユーティリティーは、現行作業ディレクトリーを使用します。

Trace options
メッセージのログを記録するファイルおよびログを記録する情報のレベルを指定できます。
構文図を読む構文図をスキップする
>>-+------------------------+--+---------------------------+---><
   '- -traceFile--file-name-'  |               .-OFF-----. |   
                               '- -traceLevel--+-ALL-----+-'   
                                               +-SEVERE--+     
                                               +-WARNING-+     
                                               +-INFO----+     
                                               +-CONFIG--+     
                                               +-FINE----+     
                                               +-FINER---+     
                                               '-FINEST--'     

-traceFile file-name
操作に関する情報のログを記録するために使用するファイルへの絶対パスまたは相対パスとファイル名を指定します。
ファイルが既に存在する場合には、pureQuery は、ファイルの既存の内容に新しいメッセージを追加します。デフォルトでは、項目は System.err に書き込まれます。
-traceLevel OFF|SEVERE|WARNING|INFO|CONFIG|FINE|FINER|FINEST|ALL
ログに記録する情報のタイプを指定します。 デフォルトのレベルは OFF です。ログ項目を書き込むファイルを指定せず、このオプションを OFF 以外の値に設定した場合、項目は System.err に書き込まれます。
-url connection-URL
データベースに接続するためのタイプ 4 JDBC URL。
-username user-ID
データ・ソースに接続するために使用するユーザー ID。
-userClasspath classpath
pdq.jar、pdqmgmt.jar、ご使用の JDBC ドライバーの JAR ファイル、およびインターフェース内にクラス・ファイルの従属関係が存在する場合に pureQuery がそれを解決するために必要とする他のすべての JAR またはクラス・ファイルのパスを提供するクラスパスを指定します。
-xmlFile XML-file
インターフェースで定義されたメソッドの SQL を指定またはオーバーライドする SQL が入っている XML 構成ファイルの名前。 XML 構成ファイルは、対応する Bean の定義もオーバーライドできます。

フィードバック