ヘッダーをスキップ
Oracle Database JDBC開発者ガイドおよびリファレンス
11gリリース1(11.1)
E05720-02
  目次
目次
索引
索引

戻る
戻る
次へ
次へ
 

1 JDBCの概要

Java Database Connectivity(JDBC)は、Javaからリレーショナル・データベースに接続するためのインタフェースを提供するJava標準です。JDBC標準はSun社によって定義され、標準のjava.sqlインタフェースを介して実装されます。このため、各プロバイダは独自のJDBCドライバで標準を実装および拡張できます。JDBCは、X/Open SQLコール・レベル・インタフェース(CLI)に基づいています。JDBC 4.0では、SQL 2003標準を使用してコンパイルします。

この章では、JDBCのOracle実装の概要を説明します。次の項目が含まれます。

Oracle JDBCドライバの概要

Oracleドライバは、標準JDBC Application Program Interface(API)をサポートする他、Oracle固有のデータ型をサポートし、パフォーマンスを向上させる拡張要素を備えています。

次のJDBCドライバがあります。

図1-1に、Oracle JDBCドライバとOracle Databaseのアーキテクチャを示します。

図1-1 Oracle JDBCドライバとOracle Databaseのアーキテクチャ

Oracle JDBCドライバとOracle Databaseのアーキテクチャ
「図1-1 Oracle JDBCドライバとOracle Databaseのアーキテクチャ」の説明

この項には、次の項目が含まれます。

Oracle JDBCドライバの共通機能

サーバー側およびクライアント側のOracle JDBCドライバは、同じ基本機能を提供します。

JDBC ThinドライバおよびJDBC OCIドライバでは、Java Development Kit(JDK)1.5および1.6をサポートしています。サーバー側内部ドライバでは、JDK 1.5しかサポートしていません。すべてのJDBCドライバでは、次の標準および機能をサポートしています。

  • 共通の構文とAPI

  • 共通のOracle拡張機能

  • マルチスレッド・アプリケーションの完全なサポート

Oracle JDBCドライバは、標準のjava.sqlインタフェースを実装します。標準の機能に加えて、oracle.jdbcパッケージを使用することにより、Oracle固有の機能へのアクセスが可能になります。

JDBC Thinドライバ

JDBC Thinドライバは、pure JavaのType IVドライバで、アプリケーションおよびアプレットで使用できます。プラットフォームに依存せず、クライアント側に追加のOracleソフトウェアは必要ありません。JDBC Thinドライバは、Oracle DatabaseにアクセスするためにSQL*Netを使用してサーバーと対話します。

JDBC Thinドライバを使用すると、Javaソケットの上でSQL*Netの実装が提供されるため、データベースに直接接続できます。このドライバでは、TCP/IPプロトコルがサポートされます。また、データベース・サーバーのTCP/IPソケットをリスニングするTNSリスナーが必要です。

JDBC OCIドライバ

JDBC OCIドライバは、Javaアプリケーション用のType IIドライバです。このドライバは、Oracleクライアントのインストールが必要であるため、Oracleプラットフォーム固有です。IPC(プロセス間通信)、名前付きパイプ、TCP/IPおよびInternetwork Packet Exchange/Sequenced Packet Exchange(IPX/SPX)を含む、インストールされたすべてのOracle Netアダプタをサポートします。

JDBC OCIドライバは、JavaとCの組合せで作成されています。Cのエントリ・ポイントをコールするシステム固有なメソッドを使用して、JDBCの起動をOCIのコールに変換します。これらのコールは、SQL*Netを使用してデータベースと対話します。

JDBC OCIドライバは、インストールされたクライアント・コンピュータにあるOCIライブラリ、Cエントリ・ポイント、Oracle Net、コア・ライブラリおよびその他の必要なファイルを使用します。

OCIは、APIの1つであり、第三世代言語のネイティブ・プロシージャやファンクション・コールを使用して、Oracle Databaseにアクセスし、SQL文の処理のすべての段階を制御するアプリケーションを作成できます。

JDBCサーバー側Thinドライバ

JDBCサーバー側Thinドライバは、クライアント側で実行されるJDBC Thinドライバと同じ機能を提供します。ただし、Oracle Databaseの内部で実行され、リモート・データベース、または同じデータベースの別セッションにアクセスします。

このドライバは、次の場合に役立ちます。

  • 中間層として動作するOracle Databaseインスタンスからリモートのデータベース・サーバーにアクセスする場合

  • Javaストアド・プロシージャなどのOracle Databaseセッションの内部から別のOracle Databaseセッションにアクセスする場合

JDBC Thinドライバをクライアント・アプリケーションから使用する場合とサーバーの内部から使用する場合で、コード上の違いはありません。

JDBCサーバー側内部ドライバ

JDBCサーバー側内部ドライバは、Javaストアド・プロシージャなど、Oracle Databaseの内部で実行され、同じデータベースにアクセスする必要がある、あらゆるJavaコードをサポートします。このドライバにより、Java Virtual Machine(JVM)はSQLエンジンに直接接続できます。このドライバでは、JDK 1.5のみをサポートしています。

JDBCサーバー側内部ドライバ、Oracle JVM、データベースおよびSQLエンジンはすべて、同一アドレス空間で実行されます。そのため、ネットワーク・ラウンドトリップ関連の問題は発生しません。プログラムは、ファンクション・コールを使用してSQLエンジンにアクセスします。


注意:

サーバー側内部ドライバでは、StatementクラスのcancelおよびsetQueryTimeoutメソッドはサポートされません。

JDBCサーバー側内部ドライバは、クライアント側ドライバとの一貫性を保ち、同一の機能と拡張要素をサポートします。

適切なドライバの選択

アプリケーションまたはアプレット用のJDBCドライバを選択するときには、次の点を考慮します。

  • 一般的に、TCP/IP以外のネットワークのサポートなどのOCI固有の機能が必要でないかぎり、JDBC Thinドライバを使用します。

  • 最大限の移植性とパフォーマンスを実現するには、JDBC Thinドライバを使用します。JDBC Thinドライバを使用すると、アプリケーションとアプレットのどちらからでもOracle Databaseに接続できます。

  • Secure Sockets Layer(SSL)を介してLightweight Directory Access Protocol(LDAP)を使用する場合は、JDBC Thinドライバを使用します。

  • Oracleクライアントの環境で使用するクライアント・アプリケーションを作成し、TCP/IP以外のネットワークのサポートなどのOCIドライバ固有の機能が必要な場合は、JDBC OCIドライバを使用します。

  • アプレットを作成する場合は、JDBC Thinドライバを使用してください。

  • データベース・サーバー内で動作し、リモート・データベースまたは同じデータベース・インスタンス内の別のセッションにアクセスする必要があるコードの場合は、JDBCサーバー側Thinドライバを使用します。

  • コードがデータベース・サーバー内で動作し、該当するセッション内でローカルにデータにアクセスする必要がある場合は、JDBCサーバー側内部ドライバを使用して、該当サーバーにアクセスします。

JDBC OCIドライバとJDBC Thinドライバの機能の相違点

表1-1に、Oracle Database 11gリリース1(11.1)のJDBC OCIドライバまたはJDBC Thinドライバに固有の機能をリストします。

表1-1 JDBC OCIドライバとJDBC Thinドライバの機能の相違点

JDBC OCIドライバ JDBC Thinドライバ

OCI接続プーリング

ネイティブXAのデフォルト・サポート

透過的アプリケーション・フェイルオーバー(TAF)


OCIクライアント結果キャッシュ




注意:

  • OCIの最適化フェッチおよびクライアント側オブジェクト・キャッシュの機能は、JDBC OCIドライバの内部機能であり、JDBC Thinドライバには適用されません。

  • ほとんどのJDBC OCIドライバの機能は、OCIから継承されているため、JDBC Thinドライバでは使用できません。


環境およびサポート

この項では、次の項目について簡単に説明します。

サポートされるJDKおよびJDBCのバージョン

Oracle Database 11gリリース1(11.1)では、どのJDBCドライバもJDK 1.5に準拠しています。また、JDBC ThinドライバとJDBC OCIドライバでは、JDK 1.6をサポートしています。1.5より前のJDKのバージョンはすべて、もうサポートされていません。JDK 1.5と1.6のサポートは、それぞれojdbc5.jarファイルとojdbc6.jarファイルによって提供されます。

JNI環境およびJava環境

JDBC OCIドライバは、OCI Cライブラリのコールに、標準Javaネイティブ・インタフェース(JNI)を使用しています。Sun社以外のJVM、特に、Microsoft社やIBM社のJVMでJDBC OCIドライバを使用できます。

JDBCとIDE

Oracle JDeveloper Suiteは、開発者に対し、インターネット用のコンポーネント・ベースのデータベース・アプリケーションを作成、デバッグおよびデプロイするための、単一の統合された製品群を提供します。Oracle JDeveloper環境には、JDBC Thinドライバおよびシステム固有なOCIドライバなど、JDBCの統合的なサポートが含まれています。Oracle JDeveloperのデータベース・コンポーネントは、JDBCドライバを使用してクライアントとサーバー上で稼働するアプリケーション間の接続を管理します。

機能リスト

表1-2に、各機能と、3つのOracle JDBCドライバ(サーバー側内部ドライバ、JDBC OCIおよびJDBC Thinドライバ)でその機能のサポートが開始されたバージョンをリストします。

表1-2 機能リスト

機能 サーバー側内部 JDBC OCI JDBC Thin

JDK 1.0


7.2.2

7.2.2

JDBC 1.0.2


7.2.2

7.2.2

JDK 1.1.1


8.0.6

8.0.6

JDBC 1.22(新機能なし、マイナーな改訂のみ)


8.0.6

8.0.6

defineColumnType


8.0.6

8.0.6

行のプリフェッチ


8.0.6

8.0.6

Oracleバッチ処理


8.0.6

8.0.6

Javaネイティブ・インタフェース


8.1.6


JDK 1.2

9.0.1

8.1.6

8.1.6

JDBC 2.0 SQL3型(BLOBCLOBStructArrayREF

8.1.5

8.1.5

8.1.5

ネイティブLOB


8.1.6

9.2.0

索引付き表

10.2.0

8.1.6

10.1.0

JDBC 2.0 スクロール可能な結果セット

8.1.6

8.1.6

8.1.6

JDBC 2.0 更新可能な結果セット

8.1.6

8.1.6

8.1.6

JDBC 2.0 標準バッチ処理

8.1.6

8.1.6

8.1.6

JDBC 2.0 接続プーリング

N/A

8.1.6

8.1.6

JDBC 2.0 XA

8.1.6

8.1.6

8.1.6

サーバー側Thinドライバ

8.1.6

N/A

N/A

JDBC 2.0 RowSet


9.0.1

9.0.1

暗黙的文キャッシュ

8.1.7

8.1.7

8.1.7

明示的文キャッシュ

8.1.7

8.1.7

8.1.7

一時LOB

9.0.1

9.0.1

9.0.1

オブジェクト型の継承

9.0.1

9.0.1

9.0.1

マルチ・レベル・コレクション

9.0.1

9.0.1

9.0.1

oracle.jdbcインタフェース

9.0.1

9.0.1

9.0.1

ネイティブXA


9.0.1

10.1.0

OCI接続プーリング

N/A

9.0.1

N/A

OCIクライアント結果キャッシュ


11.1.0


サーバー結果キャッシュ


11.1.0

11.1.0

TAF

N/A

9.0.1

N/A

NLSサポート

9.0.1

9.0.1

9.0.1

JDK 1.3

9.2.0

9.2.0

9.2.0

JDK 1.4

10.1.0

9.2.0

9.2.0

JDBC 3.0 セーブポイント

9.2.0

9.2.0

9.2.0

新規文キャッシュAPI

9.2.0

9.2.0

9.2.0

ConnectionCacheImpl接続キャッシュ

N/A

8.1.7

8.1.7

暗黙的接続キャッシュ

N/A

10.1.0

10.1.0

高速接続フェイルオーバー


10.1.0.3

10.1.0.3

接続ラップ


9.2.0

9.2.0

DMS


9.2.0

9.2.0

URLのサービス名


9.2.0

10.2.0

JDBC 3.0 接続プーリング・プロパティ

N/A

10.1.0

10.1.0

JDBC 3.0 更新可能なBLOB、CLOB、REF

10.1.0

10.1.0

10.1.0

JDBC 3.0 複数の結果セットのオープン

10.2.0

10.2.0

10.2.0

JDBC 3.0 パラメータ・メタデータ

10.1.0

10.1.0

10.1.0

JDBC 3.0 名前によるストアド・プロシージャ・パラメータの設定/取得

10.1.0

10.1.0

10.1.0

JDBC 3.0 文プーリング

10.1.0

10.1.0

10.1.0

名前による文パラメータの設定

10.1.0

10.1.0

10.1.0

エンドツーエンドのトレース


10.1.0

10.1.0

Web RowSet


10.1.0

10.1.0

プロキシ認証


10.2.0

10.1.0

JDBC 3.0 自動生成キー


10.2.0

10.2.0

JDBC 3.0 保持可能カーソル

10.2.0

10.2.0

10.2.0

JDBC 3.0 ローカル・トランザクションとグローバル・トランザクションの切替え

9.2.0

9.2.0

9.2.0

実行時接続ロード・バランシング

N/A

10.2.0

10.2.0

LOB用のsetXXXおよびgetXXXの拡張


10.2.0

10.2.0

XA接続キャッシュ

N/A

10.2.0

10.2.0

DMLリターニング


10.2.0

10.2.0

JSR 114 RowSet


10.2.0

10.2.0

SSL暗号化


9.2.0

10.2.0

SSL認証


9.2.0

11.1

RADIUS認証


10.2.0


JDK 1.5

10.2

10.2

10.2

JDK 1.6


11.1

11.1

JDBC 4.0

11.1

11.1

11.1

データベースの起動と停止

N/A

11.1

11.1

Streams AQに対するJavaインタフェース



11.1



注意:

  • この表で、N/Aは、対応するOracle JDBCドライバでその機能が使用可能でないことを示します。

  • ConnectionCacheImpl接続キャッシュ機能はOracle Database 10g以降非推奨となり、暗黙的接続キャッシュがこれにかわります。