JavaTM Platform
Standard Ed. 6

パッケージ javax.sql

サーバー側のデータソースアクセスと JavaTM プログラミング言語を使った処理に使用する API を提供します。

参照先:
          説明

インタフェースの概要
CommonDataSource DataSourceXADataSource、および ConnectionPoolDataSource に共通のメソッドを定義するインタフェースです。
ConnectionEventListener PooledConnection オブジェクトによって生成されたイベントが通知されるよう登録するオブジェクトです。
ConnectionPoolDataSource PooledConnection オブジェクトのファクトリです。
DataSource この DataSource オブジェクトが表す物理データソースへの接続に対するファクトリです。
PooledConnection 接続プール管理のフックを提供するオブジェクトです。
RowSet JavaBeansTM コンポーネントモデルの JDBC API でサポートされるようになったインタフェースです。
RowSetInternal RowSet オブジェクトが自身を RowSetReader オブジェクトや RowSetWriter オブジェクトに渡すために実装するインタフェースです。
RowSetListener RowSet オブジェクトの有効期間中に重要なイベントが発生したときに通知を希望するコンポーネントによって実装されているインタフェースです。
RowSetMetaData RowSet オブジェクトの列に関する情報を格納するオブジェクトです。
RowSetReader 切断された RowSet オブジェクトが、列データ付きで自分自身を生成するために呼び出す機能です。
RowSetWriter RowSetWriter インタフェースを実装するオブジェクトで、「ライター」と呼ばれます。
StatementEventListener Statement プール内の PreparedStatement で発生したイベントの通知を受けるように登録されているオブジェクトです。
XAConnection 分散トランザクションをサポートするオブジェクトです。
XADataSource 内部で使用される XAConnection オブジェクトのファクトリです。
 

クラスの概要
ConnectionEvent 接続関連のイベントのソースに関する情報を提供する Event オブジェクトです。
RowSetEvent RowSet オブジェクトにイベントが発生したときに生成される Event オブジェクトです。
StatementEvent PooledConnection に登録されたすべての StatementEventListener に、StatementEvent が送信されます。
 

パッケージ javax.sql の説明

サーバー側のデータソースアクセスと JavaTM プログラミング言語を使った処理に使用する API を提供します。このパッケージは java.sql パッケージの補足であり、バージョン 1.4 以降の Java Platform, Standard Edition (Java SETM) に含まれています。Java Platform, Enterprise Edition (Java EETM) では、引き続き主要部分として扱われます。

java.sql パッケージは、次の API を提供します。

  1. データソースとの接続を確立するための、DriverManager の代替となる DataSource インタフェース
  2. 接続プールと文のプール
  3. 分散トランザクション
  4. 行セット

アプリケーションでは DataSource API と RowSet API を直接使用しますが、接続プール API と分散トランザクション API は中間層インフラストラクチャーによって内部的に使用されます。

DataSource オブジェクトを使用した接続の確立

javax.sql パッケージでは、データソースとの接続を確立するための最適な方法を提供しています。元の機構である DriverManager クラスも依然として有効であり、このクラスを使用したコードも引き続き実行できます。ただし、DriverManager 機構よりも多くの利点があるため、新しい DataSource 機構を使用することをお薦めします。

接続を確立する際に DataSource を使用する主な利点を挙げます。

ドライバのベンダーは DataSource の実装を提供します。特定の DataSource オブジェクトは、特定の物理データソースを表します。DataSource オブジェクトが作成する各接続は、その物理データソースへの接続になります。

データソースの論理名は、通常はシステム管理者やシステム管理者の作業を行うユーザーによって、Java Naming and Directory InterfaceTM (JNDI) API を使用するネームサービスに登録されます。アプリケーションでは、登録されている論理名を検索して、必要な DataSource オブジェクトを取得します。そして、取得した DataSource オブジェクトを使用して、このオブジェクトが表す物理データソースへの接続を作成します。

DataSource オブジェクトが作成した接続をプールし、再利用するため、このオブジェクトを、中間層インフラストラクチャーと連携して動作するように実装することができます。このような DataSource 実装を使用するアプリケーションは、自動的に、接続プールにある接続を取得します。DataSource オブジェクトが作成した接続を、特別なコーディングをしないで分散トランザクションで使用したい場合も、このオブジェクトを、中間インフラストラクチャーと連携して動作するように実装します。

接続プールと文のプール

中間層接続プール管理プログラムで動作するように実装された DataSource オブジェクトによって作成された接続は、接続プールに追加されます。新しい接続の作成は非常に負荷が大きい作業であるため、これによりパフォーマンスが飛躍的に向上します。接続プールでは、接続の利用および再利用が可能です。 そのため、作成する必要のある新規接続の数は大幅に削減されます。

接続プールは完全に透過的です。Java EE の構成の中間層で自動的に行われ、アプリケーションの観点からは、コードを変更する必要はありません。アプリケーションでは単に DataSource.getConnection メソッドを使用してプールされた接続を取得し、Connection オブジェクトを使用するのと同じ方法で使用します。

接続プールに使用されるクラスとインタフェースは次のとおりです。

接続プール管理プログラムは 3 層アーキテクチャーの中間層で機能し、これらのクラスやインタフェースを背後で使用します。PooledConnection オブジェクトを作成するために ConnectionPoolDataSource オブジェクトが呼び出されると、接続プール管理プログラムによって新しい PooledConnection オブジェクトが ConnectionEventListener オブジェクトとして登録されます。接続が終了するか、エラーが発生した場合、接続プール管理プログラム (リスナー) は、ConnectionEvent オブジェクトを含む通知を受け取ります。

接続プール管理プログラムが PreparedStatements 用として Statement のプールをサポートする場合 (サポートするかどうかは、DatabaseMetaData.supportsStatementPooling メソッドを呼び出すことで判断可能)、接続プール管理プログラムは、自身を StatementEventListener オブジェクトとして新しい PooledConnection オブジェクトに登録します。PreparedStatement が閉じるか、エラーが発生した場合、接続プール管理プログラム (リスナー) は、StatementEvent オブジェクトを含む通知を受け取ります。

分散トランザクション

プールされた接続と同様、中間層インフラストラクチャーで動作するように実装された DataSource オブジェクトによって作成された接続も、分散トランザクションに参加することがあります。これにより、アプリケーションは、単一トランザクションで複数サーバー上のデータソースにアクセスできるようになります。

分散トランザクションに使用されるクラスとインタフェースは次のとおりです。

これらのインタフェースはトランザクションマネージャーによって使用され、アプリケーションが直接使用することはありません。

XAConnection インタフェースは PooledConnection インタフェースから派生しているため、プールされた接続に適用されることは、分散トランザクションを構成する接続にも適用されます。中間層のトランザクションマネージャーは、すべての処理を透過的に行います。アプリケーションコードの唯一の変更点は、アプリケーションがトランザクションマネージャーのトランザクション処理を妨害できなくなったことです。特に、アプリケーションは、Connection.commit メソッドや Connection.rollback メソッドを呼び出すことができません。また、接続を自動コミットモードに設定することもできません。つまり、Connection.setAutoCommit(true) を呼び出すことはできません。

アプリケーションは、特別な処理を行うことなく分散トランザクションに参加できます。通常どおり、DataSource.getConnection メソッドを使って、使用するデータソースへの接続を作成するだけで済みます。トランザクションマネージャーは、トランザクションを背後で管理します。XADataSource インタフェースは XAConnection オブジェクトを作成し、各 XAConnection オブジェクトはトランザクションマネージャーが接続を管理するために使用する XAResource オブジェクトを作成します。

行セット

RowSet インタフェースは、ほかのさまざまなクラスやインタフェースとともに背後で動作します。これらのクラスやインタフェースは 3 つのカテゴリに分けられます。
  1. イベントの通知

  2. メタデータ
  3. リーダー/ライター機能
    RowSetInternal インタフェースを実装する RowSet オブジェクトは、関連する RowSetReader オブジェクトを呼び出すことで、自身にデータを読み込むことができます。また、関連する RowSetWriter を呼び出して、行に加えた変更を、データを取得した場所からデータソースへ書き戻すことができます。引き続きデータソースに接続されている行セットは、データソース上で直接動作するので、リーダーやライターを使用する必要はありません。

RowSet インタフェースは多くの方法で実装でき、誰もが実装を作成できます。開発者は自由に想像力を働かせ、行セットの新しい使用方法を見つけ出すことが推奨されています。

重要: 「導入されたバージョン: 1.6」と表示された API を使用するコードは、JDBC 4.0 API を実装する JDBC テクノロジドライバを使って実行する必要があります。使用する特定の機能がドライバに実装されているかどうかを、ドライバのドキュメントで確認してください。

パッケージの仕様

関連ドキュメント

Addison-Wesley Longman から出版されている Java Series ブックでは、javax.sql パッケージのクラスやインタフェースに関する詳細な情報を参照できます。

導入されたバージョン:
1.4

JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。