|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
| 前のパッケージ 次のパッケージ | フレームあり フレームなし | ||||||||||
参照:
説明
| インタフェースの概要 | |
| ConnectionEventListener |
PooledConnection オブジェクトによって生成されたイベントが通知されるよう登録するオブジェクトです。
|
| ConnectionPoolDataSource | PooledConnection オブジェクトのファクトリです。 |
| DataSource | この DataSource オブジェクトが表す物理データソースへの接続に対するファクトリです。 |
| PooledConnection | 接続プール管理のフックを提供するオブジェクトです。 |
| RowSet | JavaBeansTM コンポーネントモデルの JDBC API でサポートされるようになったインタフェースです。 |
| RowSetInternal | RowSet オブジェクトが自身を RowSetReader オブジェクトや RowSetWriter オブジェクトに渡すために実装するインタフェースです。 |
| RowSetListener | RowSet オブジェクトの有効期間中に重要なイベントが発生したときに通知を希望するコンポーネントによって実装されているインタフェースです。 |
| RowSetMetaData | RowSet オブジェクトの列に関する情報を格納するオブジェクトです。 |
| RowSetReader | 切断された RowSet オブジェクトが、列データ付きで自分自身を生成するために呼び出す機能です。 |
| RowSetWriter | RowSetWriter インタフェースを実装するオブジェクトで、「ライター」と呼ばれます。 |
| XAConnection | 分散トランザクションをサポートするオブジェクトです。 |
| XADataSource | 内部で使用される XAConnection オブジェクトのファクトリです。 |
| クラスの概要 | |
| ConnectionEvent | 接続関連のイベントのソースに関する情報を提供する Event オブジェクトです。 |
| RowSetEvent | RowSet オブジェクトにイベントが発生したときに生成される Event オブジェクトです。 |
サーバ側のデータソースアクセスについて、JavaTM プログラミング言語から処理する API を提供します。このパッケージでは java.sql パッケージを補足し、バージョン 1.4 リリースでは JavaTM 2 SDK の Standard Edition に含まれています。また、依然として Java 2 SDK, Enterprise Edition (J2EETM) の必須部分です。
java.sql パッケージは、次の用途の API を提供します。
DriverManager の代替となる DataSource インタフェース
アプリケーションでは DataSource API と RowSet API を直接使用しますが、接続プール API と分散トランザクション API は中間層インフラストラクチャによって内部的に使用されます。
DataSource オブジェクトを使用した接続の作成javax.sql パッケージでは、データソースとの接続を作成するための好ましい方法を提供しています。元の機構である DriverManager クラスも有効なままであり、DriverManager クラスを使用したコードも依然として実行できます。ただし、DriverManager 機構よりも多くの利点があるため、新しい DataSource 機構の使用が推奨されています。
接続を確立する際に、DataSource を使用する主な利点を挙げます。
DataSource オブジェクトを通じて利用できる。DriverManager によって作成された接続には接続プールや分散トランザクションといった機能がない
ドライバベンダーは DataSource の実装を提供します。DataSource オブジェクトの中には特定の物理データソースを表すものがあり、そのような DataSource オブジェクトが作成した接続は、その物理データソースへの接続となります。
データソースの論理名は、通常システム管理者やシステム管理者作業を行うユーザによって、Java Naming and Directory InterfaceTM (JNDI) API を使用するネームサービスで登録されます。登録された論理名をルックアップすることで、アプリケーションでは必要な DataSource オブジェクトを取得できます。そして、取得した DataSource オブジェクトを使用して、この DataSource オブジェクトが表す物理データソースへの接続を作成します。
DataSource オブジェクトが作成した接続を再利用するためにプールできるよう、DataSource オブジェクトは中間層インフラストラクチャで動作するように実装されています。そのような DataSource 実装を使用するアプリケーションでは、接続プールにある接続を自動的に取得します。また、DataSource オブジェクトが作成した接続が特別なコーディングをしなくても分散トランザクションで使用できるようにするためにも、DataSource オブジェクトが中間層インフラストラクチャで動作するように実装されています。
DataSource オブジェクトによって作成された接続は、接続プールに属します。新しい接続の作成は非常に負荷が大きい作業であるため、これによりパフォーマンスが飛躍的に向上します。接続プールでは、接続の利用および再利用が可能です。そのため、作成する必要のある新規接続の数は実質的に削減されます。
接続プールは完全に透過的です。J2EE 構成の中間層で自動的に行われ、アプリケーションの観点からは、コードを変更する必要はありません。アプリケーションでは単に DataSource.getConnection メソッドを使用してプールされた接続を取得し、Connection オブジェクトを使用するのと同じ方法で使用します。
接続プールに使用されるクラスとインタフェースは次のとおりです。
ConnectionPoolDataSource
PooledConnection
ConnectionEvent
ConnectionEventListener
PooledConnection オブジェクトを作成するために ConnectionPoolDataSource が呼び出されると、接続プール管理プログラムによって新しい PooledConnection オブジェクトが ConnectionEventListener オブジェクトとして登録されます。接続が閉じられるかエラーが発生すると、接続プール管理プログラム (リスナー) が ConnectionEvent オブジェクトを含む通知を受け取ります。
DataSource オブジェクトで作成された接続は、分散トランザクションにも参加します。これにより、アプリケーションでは単一トランザクションで複数サーバ上のデータソースにアクセスできるようになります。
分散トランザクションに使用されるクラスとインタフェースは次のとおりです。
XADataSource
XAConnection
XAConnection インタフェースは PooledConnection インタフェースから派生しているため、プールされた接続に当てはまることは、分散トランザクションを構成する接続にもあてはまります。中間層にあるトランザクションマネージャは、すべてを透過的に処理します。アプリケーションコードを変更しただけでは、アプリケーションは、トランザクションマネージャによるトランザクション処理を妨げることはできません。特に、アプリケーションでは Connection.commit メソッドや Connection.rollback メソッドを呼び出すことができません。また、接続を自動コミットモードに設定することもできません (つまり、Connection.setAutoCommit(true) を呼び出すことができない)。
分散トランザクションに参加するために、アプリケーションで特別に行う必要のあることはありません。通常通り、使用するデータソースへの接続を DataSource.getConnection メソッドで作成するだけで済みます。トランザクションマネージャは、トランザクションを背後で管理します。XADataSource インタフェースは XAConnection オブジェクトを作成し、各 XAConnection オブジェクトはトランザクションマネージャが接続を管理するために使用する XAResource オブジェクトを作成します。
RowSet インタフェースは、ほかのさまざまなクラスやインタフェースと共に背後で動作します。これらのクラスやインタフェースは 3 つのカテゴリに分けられます。
RowSetListener
RowSet オブジェクトは、JavaBeans イベント通知機構のプロパティを保持してこれに参加するため、JavaBeansTM のコンポーネントであると言えます。RowSetListener インタフェースは、特定の RowSet オブジェクトに発生するイベントを通知するコンポーネントによって実装されます。この種のコンポーネントは、自身をリスナーとし、RowSet.addRowSetListener メソッドを使用して行セットに登録します。
RowSet オブジェクトが 1 行を変更、全行を変更、またはカーソル位置を移動すると、この RowSet オブジェクトで登録された各リスナーにも通知されます。リスナーは、呼び出された通知メソッドの実装を実行します。
RowSetEvent
RowSet オブジェクトでは RowSetEvent のインスタンスを作成してリスナーに渡します。リスナーは渡された RowSetEvent オブジェクトを使用して、どの行セットにイベントがあるかを検出します。
RowSetMetaData
ResultSetMetaData インタフェースから派生しており、RowSet オブジェクトの列に関する情報を提供します。アプリケーションでは RowSetMetaData メソッドを使用して、行セットに含まれる列数や各列に含まれるデータの種類を検出します。
RowSetMetaData インタフェースでは列に関する情報を設定するメソッドを提供しますが、アプリケーションが使用することは通常ありません。アプリケーションが RowSet の execute メソッドを呼び出すと、RowSet オブジェクトは行の新しいセットを格納し、RowSetMetaData オブジェクトは内部的に更新されて、新しい列に関する情報を含むようになります。
RowSetInternal インタフェースを実装する RowSet オブジェクトでは、関連する RowSetReader オブジェクトで呼び出すことで、データを持つ自身を生成することができます。また、関連する RowSetWriter で呼び出すことで、行に加えた変更を、その行を元々取得したところからデータソースへと書き戻すことができます。データソースに接続したままの行セットでは、データソースを直接操作することができるため、リーダーやライターを使用する必要はありません。
RowSetInternal
RowSetInternal インタフェースを実装することで、RowSet オブジェクトでは内部状態にアクセスすることができ、リーダーやライター上で呼び出すことができるようになります。行セットは現在の行と、元の値として参照される、現在の行の直前にある行の値を追跡します。また (1) コマンド用に設定されたパラメータと、(2) 行セットに渡された接続 (存在する場合) も追跡します。行セットは RowSetInternal メソッドを背後で使用することでこれらの情報にアクセスします。アプリケーションがこれらのメソッドを直接呼び出すことはありません。
RowSetReader
RowSetInternal インタフェースを実装する、切断された RowSet オブジェクトはリーダー (RowSet オブジェクトに関連付けられた RowSetReader オブジェクト) 上で呼び出して、データ付きで生成できます。アプリケーションが RowSet.execute メソッドを呼び出すと、このメソッドによって行セットのリーダーが呼び出され、ほとんどの作業を行います。リーダーの実装は様々ですが、一般には、データソースへの接続を作成し、データソースからデータを読み込み、そのデータで行セットを生成し、接続を閉じます。また、リーダーは RowSetMetaData オブジェクトを行セットに対して更新します。行セットの内部状態も、リーダーか、RowSet.execute メソッドによって直接更新されます。
RowSetWriter
RowSetInternal インタフェースを実装する、切断された RowSet オブジェクトはライター (RowSet オブジェクトに関連付けられた RowSetWriter オブジェクト) 上で呼び出して、変更を基本となるデータソースに書き戻します。ライターの実装は様々ですが、一般には次のように動作します。
RowSet インタフェースは多くの方法で実装でき、誰もが実装を作成できます。開発者は自由に想像力を働かせ、行セットの新しい使用方法を見つけ出すことが推奨されています。
重要: 「導入されたバージョン: 1.4」と表示された API を使用するコードは、JDBC 3.0 API を実装する JDBC テクノロジドライバを使って実行する必要があります。使おうとする特定の機能をドライバが実装しているかどうかを、ドライバのドキュメントで確認してください。
javax.sql パッケージのクラスやインタフェースに関する詳細な情報を参照できます。
|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
| 前のパッケージ 次のパッケージ | フレームあり フレームなし | ||||||||||
Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.