静的 SQL と動的 SQL ステートメントを実行するための Java の使用

Db2 for z/OS® SQLJと をサポートしています。 JDBC 一般的に、Java™アプリケーションは、静的SQLにはSQLJ、動的SQLには JDBC、静的および動的SQLの両方には PureQuery を使用します。

Javaプログラミング言語を使用することで、以下の主な利点を得ることができます

  • Java対応のプラットフォームであれば、どのプラットフォームでもアプリケーションを開発でき、Java Development Kit (JDK) が移植されているプラットフォームであれば、どのプラットフォームでも実行できます。
  • アプリケーションを一度開発し、それをどこででも実行することが可能です。それにより、以下の潜在的なメリットを享受できます。
    • 開発コストの削減
    • 保守コストの削減
    • システム管理コストの削減
    • 多様なハードウェアとソフトウェア構成をサポートする柔軟性

下表には、SQLJ と JDBC との主要な相違を一部記載してあります。

表 1. 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 は実行時まで分かりません。このため、表の特権の許可検査は実行時まで行われません。