インタフェース | 説明 |
---|---|
CommonDataSource |
DataSource 、XADataSource 、およびConnectionPoolDataSource に共通のメソッドを定義するインタフェースです。 |
ConnectionEventListener |
PooledConnection オブジェクトによって生成されたイベントが通知されるよう登録するオブジェクトです。 |
ConnectionPoolDataSource |
PooledConnection オブジェクトのファクトリです。 |
DataSource |
この
DataSource オブジェクトが表す物理データ・ソースへの接続に対するファクトリです。 |
PooledConnection |
接続プール管理のフックを提供するオブジェクトです。
|
RowSet |
JavaBeans™コンポーネント・モデルのサポートを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, 2014, Oracle and/or its affiliates. All rights reserved.