インタフェース | 説明 |
---|---|
CommonDataSource |
DataSource 、XADataSource 、および 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 が送信されます。 |
java.sql
パッケージの補足であり、バージョン 1.4 以降の Java Platform, Standard Edition (Java SETM) に含まれています。Java Platform, Enterprise Edition (Java EETM) では、引き続き主要部分として扱われます。
javax.sql
パッケージは、次の API を提供します。
DriverManager
の代替となる DataSource
インタフェース
アプリケーションでは DataSource
と RowSet
を直接使用しますが、接続プール API と分散トランザクション API は中間層インフラストラクチャーによって内部的に使用されます。
DataSource
オブジェクトを使用した接続の確立javax.sql
パッケージでは、データソースとの接続を確立するための最適な方法を提供しています。元のメカニズムである DriverManager
クラスも依然として有効であり、このクラスを使用したコードも引き続き実行できます。ただし、DriverManager
メカニズムよりも多くの利点があるため、新しい DataSource
メカニズムを使用することをお薦めします。
接続を確立する際に DataSource
を使用する主な利点を挙げます。
DataSource
オブジェクトを介して利用できます。DriverManager
を介して確立された接続には、接続プール、文のプール、分散トランザクションなどの機能がありません。
ドライバのベンダーは DataSource
の実装を提供します。特定の DataSource
オブジェクトは、特定の物理データソースを表します。DataSource
オブジェクトが作成する各接続は、その物理データソースへの接続になります。
データソースの論理名は、通常はシステム管理者やシステム管理者の作業を行うユーザーによって、Java Naming and Directory InterfaceTM (JNDI) API を使用するネームサービスに登録されます。アプリケーションでは、登録されている論理名を検索して、必要な DataSource
オブジェクトを取得します。そして、取得した DataSource
オブジェクトを使用して、このオブジェクトが表す物理データソースへの接続を作成します。
DataSource
オブジェクトが作成した接続をプールし、再利用するため、このオブジェクトを、中間層インフラストラクチャーと連携して動作するように実装することができます。このような DataSource
実装を使用するアプリケーションは、自動的に、接続プールにある接続を取得します。DataSource
オブジェクトが作成した接続を、特別なコーディングをしないで分散トランザクションで使用したい場合も、このオブジェクトを、中間インフラストラクチャーと連携して動作するように実装します。
DataSource
オブジェクトによって作成された接続は、接続プールに追加されます。新しい接続の作成は非常に負荷が大きい作業であるため、これによりパフォーマンスが飛躍的に向上します。接続プールでは、接続の利用および再利用が可能です。そのため、作成する必要のある新規接続の数は大幅に削減されます。
接続プールは完全に透過的です。Java EE の構成の中間層で自動的に行われ、アプリケーションの観点からは、コードを変更する必要はありません。アプリケーションでは単に DataSource.getConnection
メソッドを使用してプールされた接続を取得し、Connection
オブジェクトを使用するのと同じ方法で使用します。
接続プールに使用されるクラスとインタフェースは次のとおりです。
ConnectionPoolDataSource
PooledConnection
ConnectionEvent
ConnectionEventListener
StatementEvent
StatementEventListener
PooledConnection
オブジェクトを作成するために ConnectionPoolDataSource
オブジェクトが呼び出されると、接続プール管理プログラムによって新しい PooledConnection
オブジェクトが ConnectionEventListener
オブジェクトとして登録されます。接続が終了するか、エラーが発生した場合、接続プール管理プログラム (リスナー) は、ConnectionEvent
オブジェクトを含む通知を受け取ります。
接続プール管理プログラムが PreparedStatements
用として Statement
のプールをサポートする場合 (サポートするかどうかは、DatabaseMetaData.supportsStatementPooling
メソッドを呼び出すことで判断可能)、接続プール管理プログラムは、自身を StatementEventListener
オブジェクトとして新しい PooledConnection
オブジェクトに登録します。PreparedStatement
が閉じるか、エラーが発生した場合、接続プール管理プログラム (リスナー) は、StatementEvent
オブジェクトを含む通知を受け取ります。
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
オブジェクトはリーダー (このオブジェクトに関連付けられた RowSetReader
オブジェクト) を呼び出して、データを自身に読み込むことができます。アプリケーションが RowSet.execute
メソッドを呼び出すと、このメソッドが行セットのリーダーを呼び出し、ほとんどの作業を行います。リーダーの実装はさまざまですが、一般には、データソースへの接続を確立し、データソースからデータを読み込み、そのデータを行セットに追加し、接続を閉じます。また、リーダーはその行セット用に RowSetMetaData
オブジェクトを更新することもあります。行セットの内部状態も、リーダーによって、または直接 RowSet.execute
メソッドによって更新されます。
RowSetWriter
RowSetInternal
インタフェースを実装する、切断された RowSet
オブジェクトは、ライター (このオブジェクトに関連付けられた RowSetWriter
オブジェクト) を呼び出して、変更を配下のデータソースに書き戻すことができます。ライターの実装はさまざまですが、一般には次のように動作します。
RowSet
インタフェースは多くの方法で実装でき、誰もが実装を作成できます。開発者は自由に想像力を働かせ、行セットの新しい使用方法を見つけ出すことが推奨されています。
重要: 「導入されたバージョン: 1.6」と表示された API を使用するコードは、JDBC 4.0 API を実装する JDBC テクノロジドライバを使って実行する必要があります。使用する特定の機能がドライバに実装されているかどうかを、ドライバのドキュメントで確認してください。
javax.sql
パッケージのクラスやインタフェースに関する詳細な情報を参照できます。
バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.