静的 SQL と動的 SQL ステートメントを実行するための Java の使用
Db2 for z/OS® SQLJと をサポートしています。 JDBC 一般的に、Java™アプリケーションは、静的SQLにはSQLJ、動的SQLには JDBC、静的および動的SQLの両方には PureQuery を使用します。
Javaプログラミング言語を使用することで、以下の主な利点を得ることができます
- Java対応のプラットフォームであれば、どのプラットフォームでもアプリケーションを開発でき、Java Development Kit (JDK) が移植されているプラットフォームであれば、どのプラットフォームでも実行できます。
- アプリケーションを一度開発し、それをどこででも実行することが可能です。それにより、以下の潜在的なメリットを享受できます。
- 開発コストの削減
- 保守コストの削減
- システム管理コストの削減
- 多様なハードウェアとソフトウェア構成をサポートする柔軟性
下表には、SQLJ と JDBC との主要な相違を一部記載してあります。
| SQLJ 特性 | JDBC 特性 |
|---|---|
| SQLJ は静的 SQL モデルに従って、JDBC に対してパフォーマンスが優れています。 | JDBC は動的 SQL モデルに従います。 |
| SQLJ ソース・プログラムは同等の JDBC プログラムよりも小さくなります。その理由は、開発者が JDBC プログラムに組み込む必要がある特定のコードを SQLJ が自動生成するからです。 | JDBC ソース・プログラムは同等の SQLJ プログラムよりも大きくなります。その理由は、開発者が JDBC プログラムに組み込む必要がある特定のコードが SQLJ により自動生成されるからです。 |
| SQLJは、プログラム準備プロセス中にデータタイプをチェックし、テーブルのカラムとJavaホスト表現の間に厳格な型付けを適用します。 | JDBC は、コンパイル時にデータ・タイプのチェックを行わずに、SQL 表との間で値の受け渡しを行います。 |
| SQLJプログラムでは、Javaホスト式をSQL文に埋め込むことができます。 | JDBC では、各バインド変数ごとに独立したステートメントが必要となり、配置番号によりバインディングを指定します。 |
| SQLJ では、静的 SQL 許可検査のメリットを提供します。 SQLJ を使用すると、SQL ステートメントが実行される許可 ID はそのプランまたはパッケージの所有者です。 Db2 バインド時にテーブル権限をチェックします。 | JDBC は動的 SQL ステートメントを使用するため、SQL ステートメントが実行する許可 ID は実行時まで分かりません。このため、表の特権の許可検査は実行時まで行われません。 |