Oracle Databaseは、データの格納、使用および変更に使用できるリレーショナル・データベースです。Javaアプリケーションでは、リレーショナル・データベースのデータのアクセスおよび操作に、Java Database Connectivity(JDBC)標準が使用されます。
JDBCは、Sunが開発した業界標準のアプリケーション・プログラミング・インタフェース(API)で、これを使用すると、JavaコードにSQL文を埋め込むことができます。JDBCはX/OpenのSQL Call Level Interface(CLI)に基づき、SQL92標準のエントリ・レベルに準拠しています。オラクル社などの各ベンダーは、標準のjava.sql
パッケージのインタフェースを実装することによって、独自のJDBC実装を作成しています。
このマニュアルでは、簡単なJavaアプリケーションを使用し、Oracle Databaseに接続してデータベースのデータにアクセスおよび変更する方法について説明します。また、従業員データを表示するためのマスター・ディテール・アプリケーションの開発には、Oracle Application Development Framework(ADF)が使用されます。
この章では、このマニュアルで作成されるJavaアプリケーションの概要、およびJavaアプリケーションの開発に使用できるツールについて説明します。この章の内容は、次のとおりです。
JDBCは、ユーザーがデータベースに接続してSQL文を実行し、データベースに問合せできるようにするデータベース・アクセス・プロトコルです。コアJavaクラス・ライブラリには、JDBC APIのjava.sql
とjavax.sql
が用意されています。ただし、JDBCは、ベンダーが特定のデータベースを必要に応じて特化するためのドライバを提供できるように設計されています。
注意: Oracle Database 11gリリース2では、JDK 5以上がサポートされています。今回のリリースのJDBCサポートには、ojdbc5.jar ファイルおよびojdbc6.jar ファイルが含まれています。ojdbc6.jar ファイルによって、JDBC 4.0との整合性が提供されます。このファイルを使用するには、JDK 6が必要です。 |
Oracle Databaseでは、JDBC Thinドライバ、Oracle Call Interface(OCI)ドライバおよびoracle.sql
とoracle.jdbc
パッケージを使用したクライアント側アプリケーションの開発がサポートされています。 これらのパッケージのクラスおよびインタフェースによって、JDBC標準を拡張します。これにより、Oracleのデータ型にアクセスして変更したり、JDBC用のOracleパフォーマンス拡張をJavaアプリケーションで非常に柔軟に使用できるようになります。
次の項では、JDBC標準に対するOracleサポートについて説明します。
関連項目:
|
ほとんどの場合、JDBC Thinドライバを使用することをお薦めします。JDBC-OCIは、OCI固有の機能の場合にのみ必要となります。
JDBC Thinドライバは、Pure JavaのType IVドライバです。JDBC Thinドライバでは、JavaTM 2 Platform Standard Edition 5.0(Java Development Kit(JDK)5とも呼ばれる)がサポートされています。また、JDK 6に対するサポートも含まれています。JDBC Thinドライバはプラットフォームに依存していないため、クライアント側アプリケーションの開発にその他のOracleソフトウェアを必要としません。JDBC Thinドライバは、SQL*Netを使用してサーバーと通信を行い、Oracle Databaseにアクセスします。
JDBC Thinドライバを使用すると、Oracleネットワーク・プロトコルのPure Java実装(Two-Task Common(TTCプロトコル)およびSQL*Net)を提供することによって、データベースへの直接接続が可能になります。ドライバでは、TCP/IPプロトコルがサポートされており、データベース・サーバーのTCP/IPソケットにTransparent Network Substrate(TNS)リスナーが必要です。Thinドライバは、適切なJava仮想マシン(Java Virtual Machine: JVM)があるマシンであれば、どのマシン上でも機能します。
Oracle固有のJDBC機能および標準機能にアクセスするには、oracle.jdbc
パッケージを使用します。
JDBC OCIドライバは、Javaアプリケーションで使用されるType IIドライバです。JDBC OCIドライバを使用するには、Oracleクライアント・インストールが必要です。JDBC OCIドライバでは、プロセス間通信(IPC)、Named Pipes、TCP/IP、InternetworkPacket Exchange/Sequenced Packet Exchange(IPX/SPX)など、インストールされているすべてのOracle Netアダプタがサポートされています。
OCIはAPIの1つであり、OCIを使用すると、ネイティブ・プロシージャまたはファンクション・コールを使用するアプリケーションを作成できます。JDBC OCIドライバはJavaおよびCを組み合せて記述されており、JDBCコールをOCIへのコールに変換します。変換は、Cエントリ・ポイントをコールするネイティブ・メソッドを使用して行われます。これらのコールは、SQL*Netを使用してデータベースとの通信を行います。
JDBC APIに対するOracleサポートは、oracle.jdbc
パッケージおよびoracle.sql
パッケージによって提供されています。これらのパッケージでは、Java Development Kit(JDK)リリース1.5から1.6がすべてサポートされています。
oracle.sql
パッケージは、SQL形式でデータへの直接アクセスをサポートしています。このパッケージは、主に、SQLデータへのJavaマッピングを提供するクラスとそれらのサポート・クラスによって構成されます。実質的に、このクラスはSQLデータのJavaラッパーとして機能します。文字はJava chars
に変換され、さらにUCS-2キャラクタ・セット内のバイトに変換されます。oracle.sql.*
データ型の各クラスは、全データ型共通のファンクションおよび機能が含まれているスーパークラスoracle.sql.Datum
を拡張します。その中には、JDBC 2.0準拠のデータ型に対応したクラスもあります。データ型クラスだけでなく、oracle.sql
パッケージは、オブジェクトやコレクションで使用するクラスやインタフェースもサポートしています。
oracle.jdbc
パッケージのインタフェースでは、java.sql
パッケージのインタフェースに対するOracleの拡張機能が定義されます。これらの拡張機能によって、Oracle SQL形式のデータにアクセスできるようになります。また、その他のOracle固有の機能(Oracleのパフォーマンス拡張など)にアクセスできるようにもなります。
このパッケージの主要なクラスとインタフェースでは、標準のJDBC機能をサポートし、次のような処理を実行するメソッドがあります。
OracleのStatementオブジェクトを返します。
すべての文のOracleパフォーマンス拡張を設定します。
oracle.sql.*
型を準備済のコール可能文にバインドします。
oracle.sql
形式でデータを取得します。
データベースおよび結果セットに関するメタ情報を取得します。
SQLの型の識別に使用される整定数を定義します。
関連項目:
|
このマニュアルのJavaアプリケーション・チュートリアルでは、Oracle JDeveloper 10gリリース10.1.3を統合開発環境(IDE)として使用し、Javaアプリケーションの開発、およびユーザーがデータを表示して変更するためのWebページの作成を行います。
Oracle JDeveloperは、JavaアプリケーションおよびWebサービスのモデリング、開発、デバッグ、最適化およびデプロイをサポートするIDEです。
JDeveloperには、Javaプログラムに埋め込まれたSQL文を使用してデータベースにアクセスするJavaプログラムを作成し、テストするための機能が備えられています。JDeveloperには、データベースに関して次の処理を行うファンクションおよび機能が備えられています。
データベース接続の作成
データベース・オブジェクトの表示
データベース・オブジェクトの作成、編集または削除
PL/SQLファンクション、プロシージャおよびパッケージの作成および編集
Oracle JDeveloperは、様々なアプリケーション開発ツール用のウィンドウを使用するIDEです。ウィンドウの表示/非表示を切り替えたり、ウィンドウをドッキング/ドッキング解除して、作業方法に合ったデスクトップを作成できます。
これらのツール以外に、JDeveloperには、プロジェクトの内容を分類し表示できる多くのナビゲータが備えられています。アプリケーション・ナビゲータおよびシステム・ナビゲータには、プロジェクトのファイルが表示され、構造ウィンドウには、個別の項目の構造が表示されます。
必要に応じてウィンドウの位置を変更し、「表示」メニューから閉じたり開いたりすることができます。図1-1に、JDeveloperユーザー・インタフェース(GUI)で使用可能ないくつかのナビゲータ、パレット、作業領域のデフォルトのレイアウトを示します。
関連項目: JDeveloperオンライン・ヘルプのIDEでのウィンドウの処理に関する項を参照してください。 |
JDeveloperでは、次のツールを使用してJavaアプリケーションを簡単に作成できます。
構造ウィンドウ: ツリー・ビューに、現在編集中(Java、XMLまたはJSP/HTML)のアプリケーションのすべての要素が表示されます。
JSP/HTMLビジュアル・エディタ: HTMLおよびJSPページを視覚的に編集する場合に使用できます。
Javaソース・エディタ: Javaコードを作成する場合に役立つ豊富な機能があります。このような機能には、構文およびセマンティック・エラーをわかりやすくするハイライト、インポート文を追加およびソートする場合の支援、Javaコード・インサイト機能、コード・テンプレートがあります。
注意: Javaコード・インサイト機能は、Javaソース・エディタでコードを作成する場合にコンテキスト固有のインテリジェント入力を提供する機能です。このマニュアルでは、Javaコード・インサイトを使用したコードの挿入方法が数多く記載されています。 |
コンポーネント・パレット: ページ上に表示するボタンやテキスト領域など、ユーザー・インタフェース・コンポーネントを選択します。
JDeveloper UI内でのこれらのツールへのアクセス方法についてより理解するには、図1-1を参照してください。
このマニュアルでは、Java、JDBCおよびOracle ADFを使用してアプリケーションを作成する方法について説明します。このアプリケーションには、次のファンクションおよび機能を組み込みます。
ユーザーがログインしたり、ユーザー名およびパスワードを検証できるようにします。
データベース接続を確立します。
データベースでデータを問い合せ、JavaBeanを使用してデータを取得します。
JavaServer Pages(JSP)テクノロジを使用して、データを表示します。
ユーザーがレコードを挿入、更新または削除できるようにします。
マスター・ディテール・アプリケーションの情報にアクセスし、変更します。
例外を処理します。
注意: アプリケーションは、Oracle Databaseに付属のHR スキーマに接続します。Oracle Databaseのクライアント・インストールにはThinドライバとOCIドライバの両方が付属していますが、サンプル・アプリケーションでは、JDBC Thinドライバのみが使用されます。 |
図1-2に、このアプリケーションに対して開発されるページ間の関係を示します。
サンプル・アプリケーションのWebページの概要は、次のとおりです。
アプリケーションの開始ページです。アプリケーションのログイン・ページlogin.jsp
が自動的に表示されます。
このページで、ユーザーはアプリケーションにログインできます。ユーザー名、パスワードおよびホスト情報は、検証され、データベースにログインするための接続記述子の作成に使用されます。
login.jsp
でユーザーが入力したログイン情報の認証を処理する非表示のページです。認証が成功すると、ユーザーにemployees.jsp
が表示されます。それ以外の場合は、メッセージが含まれるlogin.jsp
ページが表示されます。
これはアプリケーションのメイン・ページです。AnyCo CorporationのHR
スキーマ内の全従業員リストが表示され、ユーザーは任意の文字列で従業員リストをフィルタできます。ユーザー・データの追加、編集および削除用の各リンクも含まれています。しかし、これらのアクションは、これらの個々のタスク専用に作成された別のJSPページで処理されます。
employees.jsp
ページ上にある従業員データを挿入するリンクを選択すると、このページが表示されます。このページには、新しい従業員レコードのすべての詳細が入力されるフォームが含まれています。このフォームで入力された詳細は、insert_action.jsp
ページによって処理されます。
insert.jsp
ページで入力された新しい従業員のデータの挿入を処理する非表示のページです。
employees.jsp
ページ上にある従業員データを編集するリンクを選択すると、このページが表示されます。このフォームのテキスト・フィールドには、1人の従業員の現在のデータが表示され、ユーザーはこの情報を編集することができます。
edit.jsp
ページでの送信アクションによって、データがこの非表示のページに送信されます。このページによって、編集済データがデータベースに挿入されます。
employees.jsp
ページ上にある従業員レコードを削除するリンクは、この非表示のページによって処理されます。このページでは、従業員データが削除され、再度employees.jsp
ページが表示されます。
サンプル・アプリケーションには、次のクラスが含まれています。
このクラスには、サンプル・アプリケーションの重要なファンクションの実装に使用されるメソッドがすべて含まれています。このクラスには、ユーザー資格証明の検証、データベースへの接続、従業員データの取得(フィルタあり/なし)、データの挿入、データの更新、例外の処理などを行うメソッドが含まれています。
このクラスは、単一の従業員レコードを保持するJavaBeanです。このクラスには、各レコード・フィールドの値を取得して設定するアクセッサ・メソッドが含まれています。また、従業員レコードを取得して変更するアクセッサ・メソッドも含まれています。
注意: このアプリケーションは、このマニュアル全体をとおしてチュートリアルの形式で開発していきます。そのため、このマニュアルは、章の順番に読むことをお薦めします。 |
Web、ワイヤレス、デスクトップまたはWebサービス・インタフェースを使用してデータを検索、表示、作成、変更および検証するエンタープライズ・ソリューションを開発する場合、作業を簡素化するには開発者フレームワークを使用する必要があります。
フレームワークを使用すると、開発者は、明確に定義されたインタフェースに基づいてコードを作成できます。これにより、大幅に時間を節約でき、また、Java EEフレームワークにはエンタープライズ・アプリケーションに必要なインフラストラクチャが備えられているため、Java EE環境という点においても有益です。つまり、Java EEフレームワークによってJava EEデザイン・パターンに表現される概念をより具体化します。
Oracle Application Development Framework(Oracle ADF)は、Java EE標準およびオープンソース・テクノロジに基づくエンドツーエンド・アプリケーション・フレームワークであり、サービス指向アプリケーションの実装を簡素化および促進します。
機能の豊富な環境を使用することにより、複雑なアプリケーションをどのように簡単に作成できるようになるかについては、第7章のマスター・ディテール・アプリケーションに関する項を参照してください。