|
JavaTM 2 Platform Standard Ed. 5.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 以降の JDK に含まれています。また、依然として Java 2 SDK, Enterprise Edition (J2EETM) の主要部分です。
java.sql パッケージは、次の API を提供します。
DriverManager の代替となる DataSource インタフェース
アプリケーションでは DataSource API と RowSet API を直接使用しますが、接続プール API と分散トランザクション API は中間層インフラストラクチャによって内部的に使用されます。
DataSource オブジェクトを使用した接続の確立javax.sql パッケージでは、データソースとの接続を確立するための最適な方法を提供しています。元の機構である DriverManager クラスも依然として有効であり、このクラスを使用したコードも引き続き実行できます。ただし、DriverManager 機構よりも多くの利点があるため、新しい DataSource 機構を使用することをお薦めします。
接続を確立する際に DataSource オブジェクトを使用する主な利点を挙げます。
DataSource オブジェクトを介して利用できる。DriverManager を介して確立された接続には、接続プールや分散トランザクションといった機能がない
ドライバのベンダーは DataSource の実装を提供します。DataSource オブジェクトは特定の物理データソースを表し、同オブジェクトが作成する接続は、その物理データソースへの接続となります。
データソースの論理名は、通常はシステム管理者やシステム管理者の作業を行うユーザによって、Java Naming and Directory InterfaceTM (JNDI) API を使用するネームサービスに登録されます。アプリケーションでは、登録されている論理名をルックアップして、必要な 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 つのカテゴリに分けられます。RowSetListenerRowSet オブジェクトは、JavaBeansTM プロパティを持ち、JavaBeans のイベント通知機構に参加しているため、JavaBeans のコンポーネントであると言えます。RowSetListener インタフェースは、特定の RowSet オブジェクトに発生するイベントを通知してもらいたいコンポーネントによって実装されます。そのようなコンポーネントは、RowSet.addRowSetListener メソッドを使用して、自身をリスナーとして行セットに登録します。
RowSet オブジェクトが 1 行を変更、全行を変更、またはカーソル位置を移動すると、このオブジェクトに登録された各リスナーにも通知されます。リスナーは、通知メソッドの実装を呼び出すことによって実行します。
RowSetEventRowSet オブジェクトは RowSetEvent のインスタンスを作成してリスナーに渡します。リスナーは渡された RowSetEvent オブジェクトを使用して、どの行セットにイベントがあるかを検出できます。
RowSetMetaDataResultSetMetaData インタフェースから派生しており、RowSet オブジェクトの列に関する情報を提供します。アプリケーションでは RowSetMetaData メソッドを使用して、行セットに含まれる列数や各列に含むことのできるデータの種類を検出できます。
RowSetMetaData インタフェースでは列に関する情報を設定するメソッドを提供しますが、アプリケーションが使用することは通常ありません。アプリケーションが RowSet の execute メソッドを呼び出すと、RowSet オブジェクトは行の新しいセットを格納し、RowSetMetaData オブジェクトは内部的に更新されて、新しい列に関する情報を含むようになります。
RowSetInternal インタフェースを実装する RowSet オブジェクトでは、関連する RowSetReader オブジェクトを呼び出すことで、データを自身に読み込むことができます。また、関連する RowSetWriter オブジェクトを呼び出すことで、行に加えた変更を、その行を元々取得したデータソースへと書き戻すことができます。データソースに接続したままの行セットでは、データソースを直接操作することができるため、リーダやライターを使用する必要はありません。
RowSetInternalRowSetInternal インタフェースを実装することで、RowSet オブジェクトでは内部状態にアクセスすることができ、リーダやライターを呼び出すことができるようになります。行セットは現在の行の値と、元の値として参照される、現在の行の直前にある行の値を保持します。また (1) コマンド用に設定されたパラメータと、(2) 行セットに渡された接続 (存在する場合) も保持します。行セットは RowSetInternal メソッドを背後で使用することでこれらの情報にアクセスします。アプリケーションがこれらのメソッドを直接呼び出すことは通常ありません。
RowSetReaderRowSetInternal インタフェースを実装する、切断された RowSet オブジェクトはリーダ (RowSet オブジェクトに関連付けられた RowSetReader オブジェクト) を呼び出して、データを自身に読み込むことができます。アプリケーションが RowSet.execute メソッドを呼び出すと、このメソッドが行セットのリーダを呼び出し、ほとんどの作業を行います。リーダの実装はさまざまですが、一般には、データソースへの接続を確立し、データソースからデータを読み込み、そのデータを行セットに追加し、接続を閉じます。また、リーダはその行セット用に RowSetMetaData オブジェクトを更新することもあります。行セットの内部状態も、リーダによって、または直接 RowSet.execute メソッドによって更新されます。
RowSetWriterRowSetInternal インタフェースを実装する、切断された RowSet オブジェクトはライター (RowSet オブジェクトに関連付けられた RowSetWriter オブジェクト) を呼び出して、変更を配下のデータソースに書き戻します。ライターの実装はさまざまですが、一般には次のように動作します。
RowSet インタフェースは多くの方法で実装でき、誰もが実装を作成できます。開発者は自由に想像力を働かせ、行セットの新しい使用方法を見つけ出すことが推奨されています。
重要: 「導入されたバージョン: 1.4」と表示された API を使用するコードは、JDBC 3.0 API を実装する JDBC テクノロジドライバを使って実行する必要があります。使おうとする特定の機能がドライバに実装されているかどうかを、ドライバのドキュメントで確認してください。
javax.sql パッケージのクラスやインタフェースに関する詳細な情報を参照できます。
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| 前のパッケージ 次のパッケージ | フレームあり フレームなし | |||||||||
Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。