|
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 つのカテゴリに分けられます。RowSetListener
RowSet
オブジェクトは、JavaBeansTM プロパティを持ち、JavaBeans のイベント通知機構に参加しているため、JavaBeans のコンポーネントであると言えます。RowSetListener
インタフェースは、特定の RowSet
オブジェクトに発生するイベントを通知してもらいたいコンポーネントによって実装されます。そのようなコンポーネントは、RowSet.addRowSetListener
メソッドを使用して、自身をリスナーとして行セットに登録します。
RowSet
オブジェクトが 1 行を変更、全行を変更、またはカーソル位置を移動すると、このオブジェクトに登録された各リスナーにも通知されます。リスナーは、通知メソッドの実装を呼び出すことによって実行します。
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 Standard Ed. 5.0 |
|||||||||
前のパッケージ 次のパッケージ | フレームあり フレームなし |
Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。