アノテーション付きメソッド・プログラミング・スタイルと DB2 データベースを使用しているのであれば、pureQuery StaticBinder ユーティリティーを使用して、アノテーション付きメソッド内の SQL ステートメントをそのデータ・ソースにバインドできます。
また、StaticBinder ユーティリティーを使用して DBRM ファイルを生成することもできます。
静的に DB2 パッケージにバインドされる、組み込み SQL を使用するアプリケーションは、パフォーマンス、信頼性、セキュリティー、モニター機能、および管理の点で最初から優れています。
StaticBinder ユーティリティーを実行する前に、pureQuery Generator ユーティリティーを実行して、バインドする SQL ステートメントが含まれるインターフェースのインプリメンテーション・クラスを生成します。pureQuery Generator ユーティリティーを実行すると、静的 DB2 パッケージを作成するために必要なすべての情報が収集されて、生成されたインプリメンテーション・クラスに格納されます。この情報には、SQL ステートメントに関する情報と、適用可能なすべてのデータ型についての情報が、
Java クラス定義からと、ターゲット・データベースの列またはパラメーター・メタデータからの両方について含まれています。またこの情報には、DB2 パッケージのルート・パッケージ名と、オプションとしてコレクション ID およびバージョンが含まれます。
StaticBinder ユーティリティーは、DB2 パッケージの作成とバインド時にインプリメンテーション・クラスからこの情報を読み取ります。StaticBinder ユーティリティーを実行する際に、読み取り元のインプリメンテーション・クラス、またはそうしたクラスに対応するインターフェースをコマンド行から指定できます。オプション・ファイルを使用する場合、1 つ以上のインターフェースを指定できます。StaticBinder ユーティリティーは、対応するインプリメンテーション・クラスから情報を読み取ります。
デフォルトでは、pureQuery
StaticBinder ユーティリティーで 4 つのパッケージまたは DBRM ファイルが作成されます。つまり、DB2 の 4 つの分離レベルごとに 1 つずつ作成されます。
pureQuery
StaticBinder ユーティリティーでは、パッケージまたは DBRM ファイルのルート名に次の数値を付加することで分離レベルが識別されます。
- 1
- 分離レベル非コミット読み取り (UR) の場合
- 2
- 分離レベルカーソル固定 (CS) の場合
- 3
- 分離レベル読み取り固定 (RS) の場合
- 4
- 分離レベル反復可能読み取り (RR) の場合
バインドの実行時に
-isolationLevel オプションを使用した場合、またはバインド・オプション・ストリングで分離レベルを指定した場合、指定した分離レベル用のパッケージまたは DBRM ファイルのみが作成されます。名前は、4 つすべての分離レベルでパッケージまたは DBRM ファイルを作成するときに
StaticBinder で使用される規則に従って付けられます。
オプション・ファイルの使用
オプション・ファイルでは、pureQuery StaticBinder ユーティリティーで処理するインターフェース (複数可) と、インターフェースの処理方法を StaticBinder ユーティリティーに通知するオプションがリストされます。
オプション・ファイルにリストされているすべてのインターフェースに適用されるデフォルト・オプションを設定できます。
さらに、デフォルト・オプションをオーバーライドして、個別のインターフェースに固有の他のオプションを設定できるように、インターフェースにオプションを設定することもできます。
StaticBinder ユーティリティーを実行するコマンドでは、-optionsFile オプションで使用するファイルを指定することができます。
例えば、pureQuery StaticBinder ユーティリティーの単純なオプション・ファイルは以下のようになります。
defaultOptions = -collection qual1 -traceFile C:\logs\staticbinder.txt -traceLevel ALL -url jdbc:db2://SRVR01:50000/DB01 -username user01 -password pass01
com.myCompany.MyInterfaceA = -collection qual2
com.myCompany.MyInterfaceB
com.myCompany.MyInterfaceC = -url jdbc:db2://SRVR01:50001/DB02 -username user02 -password pass02
この例では、
defaultOptions で始まる行は、DB2 パッケージの修飾子およびデフォルトの接続 URL を指定します。さらにその行では、メッセージをログに記録するファイルも指定します。
次の行は、デフォルト修飾子をオーバーライドする修飾子を使用してインターフェースを指定します。次の行は、すべてのデフォルト・オプションが適用されるインターフェースを指定します。
最後の行は、異なるデータベースに対してバインドするインターフェースを指定します。
さらに、各コメント行の前に # 記号を置くことによって、オプション・ファイルにコメントを含めることもできます。オプションのいずれかの値でこの記号を表示する必要がある場合は、以下のように値を二重引用符で囲みます。
-pkgVersion "ver#1"
コマンド行から StaticBinder ユーティリティーを実行してオプション・ファイルを使用する場合、pureQuery は以下の優先順位でオプションを認識します。
- コマンド行のオプション
- 指定されたオプション・ファイルにある個別のインターフェースのオプション
- 指定されたオプション・ファイルにあるデフォルト・オプション
許可
ユーティリティーを起動するユーザーの特権セットには、以下のいずれかの権限が含まれていなければなりません。
- SYSADM 権限
- DBADM 権限
- パッケージが存在しない場合には、BINDADD 特権に加え、以下のいずれかの特権。
- CREATEIN 特権
- DB2 for z/OS: 対象となるコレクションまたはすべてのコレクションに対する PACKADM 権限
- DB2 Database for Linux, UNIX, and Windows: パッケージのスキーマ名が存在しない場合には、データベースに対する IMPLICIT_SCHEMA 権限
- パッケージが存在する場合には、以下の特権。
- DB2 for z/OS: パッケージに対する BIND 特権
- DB2 Database for Linux, UNIX, and Windows: スキーマに対する ALTERIN 特権、およびパッケージに対する BIND 特権
アプリケーションでの静的 SQL ステートメントのコンパイルに必要な特権すべても、ユーザーに付与される必要があります。
グループに付与される特権は、静的ステートメントの許可検査では使用されません。
DB2 Database
for Linux, UNIX, and Windows: ユーザーに SYSADM 権限があるものの、バインドを完了するための明示特権がない場合、DB2 データベース・マネージャーは明示的な DBADM 権限を自動的に付与します。ます。
アーカイブからバインドする場合に StaticBinder ユーティリティーを実行するためのコマンドの構文
このコマンドを使用すると、アプリケーションが含まれているアーカイブに対して StaticBinder ユーティリティーを実行できます。
アーカイブは StaticBinder ユーティリティーに提供するインターフェースとインプリメンテーション・クラスを含んでいる必要があります。インターフェースとインプリメンテーション・クラスをリストする、拡張子が .bindProps であるオプション・ファイルを使用します。
StaticBinder ユーティリティーは、指定したインターフェースまたはインプリメンテーション・クラスごとに 1 つのパッケージを作成します。Generator ユーティリティーを実行したときに rootPkgName オプションを使用しなかった場合は、各パッケージのルート名はこれら 2 つのルート名のいずれかです。
- データベースが長いパッケージ名をサポートしていない場合: 各パッケージのルート名は、対応するインターフェース名の最初の 7 文字です。2 つ以上のインターフェース名の最初の 7 文字が同じ場合には、そうしたインターフェースのうち 2 番目に作成されるパッケージが最初に作成されたパッケージをオーバーライドし、3 番目のインターフェースに作成されるパッケージが 2 番目に作成されたパッケージをオーバーライドするといった具合になります。
- データベースが長いパッケージ名をサポートしている場合: 各パッケージのルート名は、対応するインターフェースのフルネームです。

>>-java--com.ibm.pdq.tools.StaticBinder------------------------->
(1)
>-------- -url--jdbc--:--db2--:--//--server--+---------+--/--database-- -username--user-ID-- -password--password-->
'-:--port-'
>-- -archive----filename--+-.ear-+------------------------------>
+-.jar-+
+-.war-+
'-.zip-'
>--+- -bindOptions----"--string-of-bind-options--"--+---------------------------------------------------------+-+-->
| | .-,--------------------. | |
| | V | | |
| '- -grant--"--grantees--(----+-authorization-ID-+-+--)--"-' |
| '-PUBLIC-----------' |
'-|--DBRM options--|-----------------------------------------------------------------------------------------'
>--+------------------+--+--------------------------+----------->
'- -differenceOnly-' '- -isolationLevel--+-CS-+-'
+-RR-+
+-RS-+
'-UR-'
>--+---------------------+-------------------------------------><
'-|--Trace options--|-'
注:
- DBRM ファイルのみを作成する場合は、-url、-username-、-password オプションを使用する必要はありません。
オプション・ファイルを使用しない場合に StaticBinder ユーティリティーを実行するためのコマンドの構文
このコマンドを使用すると、インターフェースまたはインプリメンテーション・クラスの名前を指定したり、DB2 パッケージまたは DBRM ファイルを作成するためのオプションを指定したりできます。
StaticBinder ユーティリティーは、指定したインターフェースまたはインプリメンテーション・クラスごとに 1 つのパッケージを作成します。Generator ユーティリティーを実行したときに rootPkgName オプションを使用しなかった場合は、各パッケージのルート名はこれら 2 つのルート名のいずれかです。
- データベースが長いパッケージ名をサポートしていない場合: 各パッケージのルート名は、対応するインターフェース名の最初の 7 文字です。2 つ以上のインターフェース名の最初の 7 文字が同じ場合には、そうしたインターフェースのうち 2 番目に作成されるパッケージが最初に作成されたパッケージをオーバーライドし、3 番目のインターフェースに作成されるパッケージが 2 番目に作成されたパッケージをオーバーライドするといった具合になります。
- データベースが長いパッケージ名をサポートしている場合: 各パッケージのルート名は、対応するインターフェースのフルネームです。

>>-java--com.ibm.pdq.tools.StaticBinder------------------------->
(1)
>-------- -url--jdbc--:--db2--:--//--server--+---------+--/--database-- -username--user-ID-- -password--password-->
'-:--port-'
>--+- -bindOptions----"--string-of-bind-options--"--+---------------------------------------------------------+-+-->
| | .-,--------------------. | |
| | V | | |
| '- -grant--"--grantees--(----+-authorization-ID-+-+--)--"-' |
| '-PUBLIC-----------' |
'-|--DBRM options--|-----------------------------------------------------------------------------------------'
>--+------------------+--+--------------------------+----------->
'- -differenceOnly-' '- -isolationLevel--+-CS-+-'
+-RR-+
+-RS-+
'-UR-'
>--+---------------------+-------------------------------------->
'-|--Trace options--|-'
.-,--------------------.
V |
>--+- -impl----implementation-class-+--------+-----------------><
| .-,----------------------. |
| V | |
'- -interface----Java-package.interface-+-'
注:
- DBRM ファイルのみを作成する場合は、-url、-username-、-password オプションを使用する必要はありません。
オプション・ファイルを使用する場合に StaticBinder ユーティリティーを実行するためのコマンドの構文
以下のコマンドとオプション・ファイルを使用すると、インターフェース名を指定したり、こうしたそれぞれのインターフェースに基づく DB2 パッケージまたは DBRM ファイルを作成するためのオプションを指定したりできます。
重要: オプション・ファイルを使用しない場合にコマンド行でインプリメンテーション・クラスを指定することはできますが、オプション・ファイルを使用する場合にインプリメンテーション・クラスを指定することはできません。

>>-java--com.ibm.pdq.tools.StaticBinder------------------------->
(1)
>-------- -url--jdbc--:--db2--:--//--server--+---------+--/--database-- -username--user-ID-- -password--password-->
'-:--port-'
>-- -optionsFile--file-name--+---------------------+-----------><
'-|--Trace options--|-'
注:
- DBRM ファイルのみを作成する場合は、-url、-username-、-password オプションを使用する必要はありません。
StaticBinder ユーティリティーのオプション・ファイルにデフォルト・オプションを指定するための構文
この構文図は、オプション・ファイルにリストされているすべてのインターフェースに設定できるデフォルト・オプションを示しています。

>>-defaultOptions--=-------------------------------------------->
(1)
>-------- -url--jdbc--:--db2--:--//--server--+---------+--/--database-- -username--user-ID-- -password--password-->
'-:--port-'
>--+- -bindOptions----"--string-of-bind-options--"--+---------------------------------------------------------+-+-->
| | .-,--------------------. | |
| | V | | |
| '- -grant--"--grantees--(----+-authorization-ID-+-+--)--"-' |
| '-PUBLIC-----------' |
'-|--DBRM options--|-----------------------------------------------------------------------------------------'
>--+--------------------------+--+---------------------+-------><
'- -isolationLevel--+-CS-+-' '-|--Trace options--|-'
+-RR-+
+-RS-+
'-UR-'
注:
- DBRM ファイルのみを作成する場合は、-url、-username-、-password オプションを使用する必要はありません。
StaticBinder ユーティリティーのオプション・ファイルで個々のインターフェースのオプションを指定するための構文
この構文図は、オプション・ファイルにリストされている各インターフェースに設定できるオプションを示しています。

>>-Java-package.interface--=------------------------------------>
(1)
>-------- -url--jdbc--:--db2--:--//--server--+---------+--/--database-- -username--user-ID-- -password--password-->
'-:--port-'
>--+- -bindOptions----"--string-of-bind-options--"--+---------------------------------------------------------+-+-->
| | .-,--------------------. | |
| | V | | |
| '- -grant--"--grantees--(----+-authorization-ID-+-+--)--"-' |
| '-PUBLIC-----------' |
'-|--DBRM options--|-----------------------------------------------------------------------------------------'
>--+--------------------------+--------------------------------><
'- -isolationLevel--+-CS-+-'
+-RR-+
+-RS-+
'-UR-'
注:
- DBRM ファイルのみを作成する場合は、-url、-username-、-password オプションを使用する必要はありません。
オプションの説明
- -archive
- アーカイブ・ファイル内のアプリケーションを DB2 サーバーに展開し、そのサーバー上で StaticBinder を実行して SQL ステートメントをバインドするには、このオプションを使用します。
サポートされるアーカイブ・ファイルの種類は、.ear、.jar、.war、.zip です。
- -bindOptions "string-of-bind-options"
- これらのオプションには、同名の DB2 プリコンパイル・オプションおよびバインド・オプションと同じ機能があります。
DB2 for z/OS システムで実行するプログラムを作成している場合は、DB2 for z/OS のオプションを指定してください。
DB2 for Linux, UNIX, and Windows システムで実行するプログラムを作成している場合は、DB2 for Linux, UNIX, and Windows のオプションを指定してください。
- これらのオプションのリストおよび説明については、BIND コマンドを参照してください。
pureQuery コードにおいて、REOPT バインド・オプションが役立つ場合があります。このオプションを使用すると、SQL ステートメントにパラメーター・マーカーを使用しつつ、DB2 アクセス・パスを最適化できます。サポートされる DB2 データベースでのこのオプションの使用については、以下のリンクを参照してください。
- DBRM オプション
- DBRM ファイルを生成する場合は、パッケージを作成せずに、これらのオプションを使用します。
これらのオプションは、DB2 for z/OS を使用している場合にのみ適用されます。
StaticBinder ユーティリティーで DBRM ファイルが生成された後、それらをデータ・セットにコピーする必要があります。 デフォルトの DBRM データ・セット名は prefix.DBRMLIB.DATA です。ここで prefix は、ユーザーの TSO プロファイルで指定された高位修飾子です。通常、prefix は TSO におけるユーザー ID です。
DBRM データ・セットがまだ存在しない場合は、それを作成する必要があります。
DBRM データ・セットには、すべての SQL ステートメントを保持するスペースと、各ホスト変数名とヘッダー情報用の追加スペースが必要です。
ヘッダー情報の概算として、DBRM ごとに 2 つのレコード、SQL レコードごとに 20 バイト、ホスト変数ごとに 6 バイトが必要です。
DBRM の厳密なフォーマットについては、ライブラリー prefix.SDSNMACS の DBRM マッピング・マクロである DSNXDBRM を参照してください。
以下の構文図は、DBRM ファイルを生成するためのオプションを記述しています。

>>- -generateDBRM--+-TRUE--+-- -outputDBRMPath--path-----------><
'-FALSE-'
- -generateDBRM
- パッケージを作成する代わりに DBRM ファイルを生成するかどうかを指定します。
generateDBRM が TRUE である場合、デフォルトでは、StaticBinder ユーティリティーにより 4 つの DBRM ファイルが生成されます。つまり、CS、RR、RS、UR の分離レベルごとに 1 つずつ生成されます。
ただし、-isolationLevel オプションを指定した場合には、DBRM ファイルは 1 つしか生成できません。
生成される DBRM ファイルのルート名は、Generator ユーティリティーを実行するときに指定するルート・パッケージ名です。
この名前が 7 文字より長い場合、StaticBinder ユーティリティーは例外をスローします。
- -outputDBRMPath path
- 生成された DBRM ファイルを保存するディレクトリーを指定します。デフォルト値は、StaticBinder ユーティリティーの実行元となるディレクトリーです。
- -differenceOnly
- StaticBinder ユーティリティーを実行する pureQueryXML ファイル用にすでに存在する可能性がある DB2 パッケージを置換しないように指定します。
- -grant "grantees(firstID,secondID,...)"
- StaticBinder ユーティリティーが作成するパッケージに対する EXECUTE 特権を付与する対象者をカンマで区切ったリストを指定します (カッコ内)。このオプションを指定しなかった場合、StaticBinder ユーティリティーはこの特権を付与しません。
- grantees
- EXECUTE 特権を付与する許可 ID をカンマで区切ったリスト。リストする許可 ID は、使用している DB2 データベースに対して有効なものでなければなりません。
Linux、UNIX、および Windows 用の DB2 データベースの場合: キーワード USER、GROUP、ROLE を使用できます。これらのキーワードの詳細については、 GRANT (Package Privileges) statement を参照してください。
z/OS 用の DB2 の場合: キーワード ROLE を使用できます。このキーワードの詳細については、 GRANT (package privileges) を参照してください。
制約事項:
- -generateDBRM オプションの値が TRUE である場合は、-grant オプションを使用できません。
- StaticBinder ユーティリティーの 1 回の呼び出しの中で、コマンドラインとオプション・ファイルの両方に-grant オプションを使用することはできません。
- オプション・ファイル内では、defaultOptions 行の中で、またはファイル内の 1 つ以上の個別の項目内で -grant オプションを使用できます。1 つのオプション・ファイル内の両方の場所で -grant を使用することはできません。
- -impl
- pureQuery Generator ユーティリティーによって生成され、DB2 パッケージにバインドする SQL ステートメントが入っている、インプリメンテーション・クラスの名前。名前は、
Impl で終わらなければならず、このクラスが置かれている Java パッケージの名前で修飾されている必要があります。
- -interface
- pureQuery Generator ユーティリティーがインプリメンテーション・クラスを
生成する対象となるインターフェースの名前。そのインプリメンテーション・クラスには、
DB2 パッケージにバインドする SQL ステートメントが入っています。
名前には、このクラスが置かれている Java パッケージを含める必要があります。pureQuery StaticBinder ユーティリティーは、インターフェースの名前と接尾部 Impl の組み合わせを使用して、使用するインプリメンテーション・クラスを判別します。
- -isolationLevel CS | RR | RS | UR
- 4 つの分離レベルごとに 1 つずつ DB2 パッケージ・ファイルまたは DBRM ファイルを生成するのではなく、特定の分離レベル用の単一の DB2 パッケージまたは DBRM ファイルを生成することを指定します。
- CS
- 分離レベルとしてカーソル固定を指定します。
StaticBinder は、作成されるパッケージまたは DBRM ファイルの名前に 1 を付加します。
- RR
- 分離レベルとして反復可能読み取りを指定します。
StaticBinder は、作成されるパッケージまたは DBRM ファイルの名前に 2 を付加します。
- RS
- 分離レベルとして読み取り固定を指定します。
読み取り固定では、アプリケーションによって読み取りおよび変更される行に関し、パッケージ内の SQL ステートメントの実行が、他のアプリケーション・プロセスから確実に分離されます。
- StaticBinder は、作成されるパッケージまたは DBRM ファイルの名前に 3 を付加します。
- UR
- 分離レベルとして非コミット読み取りを指定します。
StaticBinder は、作成されるパッケージまたは DBRM ファイルの名前に 4 を付加します。
- Java-package.interface (オプション・ファイルの行の始め)
- 指定されたインターフェースに入っている SQL ステートメントのみにこの行のオプションが適用されることを指定します。
これらのオプションは、デフォルトとして指定したオプションをオーバーライドします。
- インターフェースが属する Java パッケージの名前を使用して、インターフェースの名前を修飾する必要があります。
- -optionsFile file-name
- バインドする SQL ステートメントが入っているインターフェースをリストするファイルの名前 (絶対パスまたは相対パスを含む)。
- -password
- データ・ソースに接続するために使用するパスワード。
- トレース・オプション
- メッセージをログに記録するファイルを指定したり、ログに記録する情報レベルを指定したりできます。

>>-+------------------------+--+---------------------------+---><
'- -traceFile--file-name-' '- -traceLevel--+-OFF-----+-'
+-ALL-----+
+-SEVERE--+
+-WARNING-+
+-INFO----+
+-CONFIG--+
+-FINE----+
+-FINER---+
'-FINEST--'
- -traceFile file-name
- 操作に関する情報をログに記録するために使用するファイルの絶対パスまたは相対パスと名前を指定します。
- ファイルがすでに存在する場合、pureQuery は新規のメッセージを既存のファイルの内容に追加します。
- -traceLevel
- ログに記録する情報のタイプを指定します。
デフォルトのレベルは OFF です。ログ項目を書き込むファイルを指定せず、このオプションを OFF 以外の値に設定した場合、項目はコンソールに書き込まれます。
- -url connection-URL
- データベースに接続するためのタイプ 4 JDBC URL。
- -username
- データ・ソースに接続するために使用するユーザー ID。