DB2とJava:その全体像

はじめに

IBM® DB2® Universal DatabaseTM(UDB)は、重要なインターネット規格のすべてをサポートしており、Webでの利用に理想的なデータベースです。リレーショナル・データベースのスケーラビリティーと可用性の特性に加えて、インターネット検索と複雑なテキスト・マッチングを円滑に行うためのメモリー内速度を備えています。DB2 UDBは、WebSphere®、JavaTM、およびXML技術をサポートしており、e-businessアプリケーションの導入を容易にします。

DB2 Universal Databaseは、さまざまな種類のJavaプログラムをサポートしており、JDBCTMを使ってJavaで作成したクライアント・アプリケーションやアプレット用のドライバー・サポートを提供します。また、組み込みSQL for Java(SQLJ)、Javaユーザー定義関数(UDF)、およびJavaストアード・プロシージャーもサポートしています。

この記事では、DB2 UDB Universal Developer's Edition Version 8(UDE)、DB2 for z/OSTM and OS/390®(V7)、およびDB2 for iSeriesTM(V5R2)で提供されているJavaアプリケーション開発環境について説明します


Javaプラットフォーム・サポート

このセクションでは、次の機能について説明します。

JDBCサポート

JDBC仕様によると、4つのタイプのJDBCドライバー・アーキテクチャーが存在します。

  • Type 1 − Open Database Connectivity(ODBC)などの別のデータ・アクセスAPIへのマッピングとしてJDBC APIを実装するドライバー。このタイプのドライバーは一般に、ネイティブ・ライブラリーに依存しており、移植性が制限されます。JDBC-ODBCブリッジ・ドライバーが、Type 1ドライバーの一例です。
  • Type 2 − 一部はJavaプログラミング言語で作成され、一部はネイティブ・コードで作成されたドライバー。このタイプのドライバーは、接続先のデータ・ソースに固有のネイティブ・クライアント・ライブラリーを使用します。ネイティブ・コードを使用するため、やはり移植性は制限されます。
  • Type 3 − Pure Javaクライアントを使用し、データベースに依存しないプロトコルを使用してミドルウェア・サーバーと通信するドライバー。ミドルウェア・サーバーは、クライアントの要求をデータ・ソースに伝えます。
  • Type 4 − Pure Javaであり、特定のデータ・ソース用のネットワーク・プロトコルを実装したドライバー。クライアントは、データ・ソースに直接接続します。

DB2 UDB Version 8 for Linux, UNIX®, and Windows®は、Type 2、Type 3、Type 4のJDBCドライバーをサポートしています。従来のリリースのJDBCドライバーは、DB2 CLI(コール・レベル・インターフェース)の上に構築されていました。DB2 Version 8のType 2とType 3ドライバーは、引き続きこのDB2 CLIインタフェースを使って、UNIX、Windows、Linux上のDB2 UDB サーバーと通信します。通常の場合、Linux、UNIX、Windows上のアプリケーションがOS/390、z/OS、iSeries上のDB2データへのアクセスを要求すると、DB2 Connectサーバーが要求されます。DB2 UDB Version 8 for Linux, Unix and Windowsには、新たにDB2 JDBC Universal Driver(Type 4)が追加されています。このドライバーは、クライアント/サーバー通信用に分散リレーショナル・データベース体系TM(DRDA®)プロトコルを使用しており、対応するDRDA Application Server(AS)レベルのサポートと必要なストアード・プロシージャーを持つ各種DB2サーバー・プラットフォームと互換性があります。この新しいJDBC Universal Driverを使って、DB2データベース・サーバー・ファミリー間でデータにアクセスすることができます。このドライバーは現在、UNIX、Windows、Linux上のDB2 UDB v8サーバーと、z/OS上のDB2 UDB v7およびv8サーバーをサポートしています。このドライバーの将来の方向性としては、iSeries上のDB2もサポートする予定です。

DB2 for iSeriesデータベース・サーバーには、Type 4 JDBCドライバーであるiSeries Toolbox for Javaドライバーが用意されています。iSeries Developer Kit for Javaには、iSeries DB2コール・レベル・インターフェース(CLI)ネイティブ・ライブラリー上に構築されたType 2 JDBCドライバーがあります。

DB2 for z/OS v7はJDBC Type 2ドライバーを提供しており、次期DB2 V8 for z/OSリリースでJDBC Universal Driver(Type 4)をサポートする計画を発表済みです。

DB2 JDBCドライバーは、最新のJDBC 3.0の機能の多くをサポートしています。

SQLJサポート

DB2 SQLJサポートにより、SQLJアプレットやアプリケーションを構築し、実行することができます。こうしたJavaプログラムには、プリコンパイルされ、DB2 UDBデータベースにバインドされた組み込みSQLステートメントが含まれています。

SQLJには、変換プログラム、カスタマイザー、ランタイム環境の3つのコンポーネントがあります。変換プログラムは、ソースSQLJプログラム内の組み込みSQLステートメントに基づいて、Javaコードを生成します。SQLステートメントのバイナリー表現が、個別の直列化プロファイル(.ser file)に作成されます。db2sqljcustomizeコマンドを使ってプロファイルをカスタマイズすると、静的SQLパッケージが作成されます。

図1. Type 4 Java Universal Driverを使ったSQLJアプリケーション開発(ドライバーとリリースによってはプロセスが異なる場合があります)
図1. Type 4 Java Universal Driverを使ったSQLJアプリケーション開発(ドライバーとリリースによってはプロセスが異なる場合があります)

SQLJは、下記を提供します。

  • 静的パッケージ・レベル・セキュリティー・モデル
  • 静的SQLインタフェース(例:SELECT xxx INTO :hv1, :hv2)
  • JDBCと比較した場合の開発生産性の向上(特に、既存の組み込みSQLアーキテクチャー(C、COBOLなど)からアプリケーションを移植する場合)。

J2EEサポート

Java 2 Platform, Enterprise Edition(J2EE)は、多層エンタープライズ・アプリケーション開発用の規格を定義しています。J2EEプラットフォームは、インフラストラクチャーを管理し、Webサービスをサポートして、セキュアで堅牢性があり、相互運用可能なビジネス・アプリケーションの開発を可能にします。J2EEは、「Write Once, Run Anywhere」の移植性やデータベース・アクセス用のJDBC APIなど、Java 2 Platform, Standard Editionの多くの機能を活用しているだけでなく、Java Servlets、JavaServer Pages(JSPs)、およびXML技術といったEnterprise JavaBeans(EJBs)コンポーネント・フル・サポートを追加しています。単純性、移植性、スケーラビリティー、およびレガシー統合を備えたJ2EE技術とそのコンポーネントベース・モデルにより、エンタープライズの開発と導入が簡素化されます。

図2.J2EEアプリケーション・モデル
図2.J2EEアプリケーション・モデル

Entity EJB(Enterprise Javabeans)には、コンテナー管理パーシスタンス(CMP)とビーン管理パーシスタンス(BMP)の2つのタイプがあります。WebSphere Studioは、Entity EJBを含め、J2EEアプリケーションの作成に理想的な環境を提供します。多くのJava開発者は、単にDB2データベース・サーバーに保存されたデータにアクセスするために、好んでCMP EJBを使用しています。柔軟で移植可能なこのプログラミング・モデルは、リレーショナル・マッピング・レイヤーへのオブジェクトとEnterprise Javabean Query Language(EJB-QL)を使って、データ・アクセス・レイヤーを抽象化します。WebSphere Studio Application Developer v5製品は、DB2アプリケーションを迅速かつ効率的に構築するためのJ2EE開発ウィザードとテンプレートのフル・スイートを提供します。J2EEアプリケーションを開発しながら、組み込みWebSphereテスト環境で迅速にテストを行い、準備の整ったWebSphere Application Server本番環境にアプリケーションを導入することができます。

DB2 EJBサンプル
DB2 Version 8 on Linux, UNIX and WindowsにはDB2 UDB EJBベースのサンプルが同梱されています。このサンプル・アプリケーションには、Session/Entity EJBコンポーネントへのJSP/servletインタフェースを使ってDB2サンプル・データベースにアクセスするWebクライアントが内蔵されています。サンプル・アプリケーションの入ったAccessEmployee.earファイルは、Windowsプラットフォームであれば、<DB2_root>\samples\java\Websphere\ディレクトリーに、UNIXプラットフォームであれば、<DB_instance_home>/sqllib/samples/java/Websphereディレクトリーにあります。

EJBサンプル・アプリケーションの詳細な説明と導入情報は、samples/JavaディレクトリーのREADMEファイルにあります。


Java UDFとストアード・プロシージャー

DB2 UDBは、DB2サーバー内部のアプリケーションの一部をリンクするための柔軟なJavaインフラストラクチャーを提供します。Javaモジュールを、ユーザー定義関数(UDF)と呼ばれるSQL拡張に変換することが可能です。もう1つの強力なオプションは、既存のJavaクラスを使って、ストアード・プロシージャーと呼ばれるデータベース・オブジェクトを作成する機能です。Java UDFとストアード・プロシージャーには、DB2サーバーとJava仮想マシン、外部のJavaクラス・ファイルとのインタラクションが関係するため、そうした機能の構築と導入のベスト・プラクティスに関して、DB2ファミリー間のプラットフォームの相違を考慮することが重要です。DB2 UDB V8には、Java用の分散デバッガーが同梱されており、Javaストアード・プロシージャーのロジックをデバッグするのに便利です。DB2 Development Centerを使用すれば、多くのプラットフォーム上でJavaストアード・プロシージャーとUDFを作成し、テストすることができます。

DB2 Java UDFを使って、データベース・サーバーSQL言語の機能を拡張することができます。実装後は、任意のSQL照会によってJava UDFを呼び出すことができます。そうしたJava SQL関数は、スカラー値またはテーブル(レコード・セット)を戻すことができます。テーブル関数は、データ・ソースをDB2テーブルのように見せることができるため、強力であり、その後、通常のSQL照会、結合操作、グループ化などに使用することができます。JavaベースのSQL関数の作成についての詳しい情報は、DB2 SQLリファレンスのCREATE FUNCTION SQLステートメントの説明を参照してください。

ストアード・プロシージャーは、アプリケーション・ロジックとサーバー上のデータベース・アクセスをカプセル化するのに役立ちます。クライアント・アプリケーションから呼び出されたストアード・プロシージャーが、データベース・アクセスを実行します。ネットワーク経由で不必要なデータが戻されることはありません。ストアード・プロシージャーは、クライアント・アプリケーションが必要とする結果のみを戻します。ストアード・プロシージャーは、次の利点をもたらします。

  • パフォーマンスの改善:
    SQLステートメントをグループ化することで、ネットワーク・トラフィックを軽減することができ、その結果パフォーマンスが改善されます。通常のアプリケーションでは、各SQLステートメントについてネットワーク2往復が必要とされます。SQLステートメントをストアード・プロシージャーにグループ化することにより、トランザクションを完了するためのネットワーク・インタラクション数を減らすことができます。大規模な結果セットを、DB2サーバー上でストアード・プロシージャー・モジュール内部で処理することができ、クライアント・アプリケーション側で処理しなければならないデータ量を削減することができます。
  • データ・モデルに関連するビジネス・ルールの実行:
    ストアード・プロシージャーを使って、一般的なビジネス・ルールを定義し、再利用することができます。アプリケーションからストアード・プロシージャーを呼び出すと、ストアード・プロシージャーに定義されたルールに従った一貫した方法でデータが処理されます。ルールを変更する必要がある場合は、ストアード・プロシージャーに一度変更を加えるだけで済みます。ストアード・プロシージャーを呼び出すすべてのアプリケーションを変更する必要はありません。

JavaベースのSQLプロシージャーの作成についての詳しい情報は、DB2 SQLリファレンスのCREATE PROCEDURE SQLステートメントの説明を参照してください。

図3a.JavaクライアントとDB2間のコマンド
図3a.JavaクライアントとDB2間のコマンド
図3b.Javaクライアント
図3b.Javaクライアント

Javaアプリケーション開発用ツール

WebSphere Studioは、Javaアプリケーションの構築、テスト、WebSphere Application ServerおよびDB2 Universal Databaseへの導入を可能にする統合開発環境(IDE)です。WebSphere StudioのDB2ストアード・プロシージャーとUDFビルダー・コンポーネントは、DB2 Universal Databaseと併用するためのJavaストアード・プロシージャとユーザー定義関数(UDF)の作成および処理用のウィザードとツールを提供します。DB2データにアクセスするアプリケーションの作成時に、データベース・サーバーに登録されるストアード・プロシージャーとUDFを組み込むことにより、アプリケーションのパフォーマンスを高めることができます。

DB2 Development Centerを、単独でまたはWebSphere Studioと組み合わせて使用して、UNIX、Windows、Linux、およびz/OSプラットフォーム用の、サーバー・サイドのJavaストアード・プロシージャーやUDFを作成することができます。


要約

DB2 UDB Universal Developer's Edition Version 8製品は、アプリケーションを高速に構築・導入するために必要とされるすべてのツールを提供します。パッケージには、フル機能の統合開発環境、スケーラブルなWebアプリケーション・サーバー、およびDB2 UDB組み込みXML機能が含まれています。DB2 Universal Databaseは、e-businessのデータ管理の基盤となるスケーラブルできわめて強力なデータベースです。


参考文献

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Information Management
ArticleID=322917
ArticleTitle=DB2とJava:その全体像
publish-date=02132003