モジュール java.sql.rowset

パッケージ javax.sql.rowset

JDBC RowSet実装用の標準インタフェースと基底クラスです。 このパッケージには、標準RowSet実装が実装または拡張するインタフェースとクラスが含まれています。

目次

1.0 パッケージの仕様

このパッケージは、5つの標準JDBC RowSetインタフェースを指定します。 これらの5つのインタフェースはすべて、JDBC 3.0仕様に記述されているRowSetインタフェースを拡張します。 このテクノロジの発達とともに、より専門化されたJDBC RowSet型の追加定義が追加される予定です。 将来の定義は、この仕様と同じように、継承を利用してサブインタフェースとして指定されることになっています

注: このパッケージで提供されるインタフェース定義は、これに準拠したすべてのJDBC RowSet実装の基盤となります。 ベンダーや開発者が、定義に準拠した独自のRowSet実装を提供したい場合は、仕様インタフェースに詳述されているアサーションに注意する必要があります。

2.0 標準RowSet定義

  • JdbcRowSet - 結果セットをJavaBeans™コンポーネントとして使用できるようにするResultSetオブジェクトのラッパーです。 したがって、JdbcRowSetオブジェクトは、ツールがコンポーネント・ベースのアーキテクチャの一部としてアプリケーションをアセンブルするために利用できるBeanになります。 JdbcRowSetオブジェクトは、接続されたRowSetオブジェクトです。つまり、JDBCテクノロジを使用可能なドライバ(JDBCドライバ)を使用してデータ・ソースとの接続を継続して保持する必要があります さらに、JdbcRowSetオブジェクトは、JDBC 3.0仕様の定義に従って、完全に更新可能でスクロール可能な表データ構造を提供します。
  • CachedRowSet - CachedRowSetオブジェクトは、スクロール、更新、直列化が可能で、通常はデータ・ソースから切断されたJavaBeans™コンポーネントです。 CachedRowSetオブジェクトには、通常、結果セットの行が格納されますが、スプレッドシートなど、表形式のあらゆるファイルの行を格納することもできます。 CachedRowSet実装は、未接続のRowSetオブジェクトと元のデータ・ソースの同期を取るため、SyncFactoryを使って、プラグイン可能なSyncProviderオブジェクトを管理および取得する必要があります 通常、SyncProvider実装は、JDBCドライバを利用して特定のデータ・ソースに接続します。 このメカニズムの詳細については、javax.sql.rowset.spiパッケージの仕様を参照してください。
  • WebRowSet - WebRowSetオブジェクトは、整形式のXMLでRowSetオブジェクトの読取りと書込みを行うことができるCachedRowSetの拡張です。 このクラスは、XmlReaderオブジェクト(RowSetReaderインタフェースの拡張)を呼び出して、XML形式で行セットを読み取ります。 また、XmlWriterオブジェクト(RowSetWriterインタフェースの拡張)を呼び出して、XML形式で行セットを書き込みます。 WebRowSetオブジェクトが必要とするリーダーおよびライターは、SyncFactoryにより、SyncProvider実装の形式で提供されます。 確実に整形式のXMLを使用できるように、http://java.sun.com/xml/ns/jdbc/webrowset.xsdに、標準のジェネリックXMLスキーマが定義され、公開されています。
  • FilteredRowSet - FilteredRowSetオブジェクトは、プログラムを使用した拡張可能な方式のフィルタリング機能を提供します。 RowSet オブジェクトが、未接続の環境を犠牲にすることなくコンテンツにフィルタリングを適用する必要がある場合は、多数存在します。これは、データ・ソースへの接続を作成するコストの削減のためです。 このニーズに対する解決策は多岐にわたっており、とても重いフル・スケールのSQLクエリー機能を提供する方法から、移植可能なコンポーネントを提供する方法、より軽量な方法が用意されています。 FilteredRowSetオブジェクトは、実行時にフィルタを定義できるPredicateインタフェースの実装を使用します。 また、FilteredRowSetオブジェクトは、インバウンドおよびアウトバウンドの読取りと書込みの操作にセット・フィルタを適用するタスクを任されています。 よって、すべてのフィルタは、双方向と見なされます。 標準フィルタは未定義です。ただし、必要なフィルタを実施するために十分なメカニズムが指定されます。
  • JoinRowSet - JoinRowSetインタフェースは、複数の標準RowSet実装の関係を確立するメカニズムを記述します。 RowSetオブジェクトがSQL JOIN方式で関連付け可能な場合、JoinRowSetオブジェクトに追加できるRowSetオブジェクトの数に制限はありません。 定義によると、SQL JOIN文は、2つ以上のリレーショナル・データベース・テーブルに格納されたデータを、共通の属性に基づいてまとめるために使用されます。 列のマッチングを作成し、施行することにより、JoinRowSetオブジェクトは、元のデータ・ソースはそのままで、RowSetインスタンス同士の関係を確立します。

3.0 実装ガイド

JDBC RowSet実装の準拠実装は、この仕様に記述されたアサーションに従う必要があります Java Community Processの規定に従って、仕様との互換性を確保するため、Test Compatibility Kit (TCK)をライセンスできます。 次の段落では、標準JDBC RowSet定義の実装の開始点について概説します。 SyncProvider実装のガイドラインについては、javax.sql.rowset.spiパッケージの実装ガイドも参照してください。
  • 3.1 コンストラクタ

    すべてのRowSetの実装では、引数を持たないコンストラクタがなければいけません

  • 3.2 BaseRowSetクラスの役割

    準拠したJDBC RowSet実装では、このパッケージで指定された1つ以上の標準インタフェースを実装する必要があり、抽象クラスBaseRowSetを拡張することができます。 たとえば、CachedRowSet実装は、CachedRowSetインタフェースを実装し、BaseRowSet abstractクラスを拡張する必要があります。 BaseRowSetクラスは、RowSetオブジェクトが接続環境にあるか未接続の環境にあるかに関係なく、すべてのRowSet実装の構築に使用される標準アーキテクチャを提供します。 BaseRowSet abstractクラスは、RowSet実装に、プロパティの操作やイベント通知に代表される、JavaBeansコンポーネント要件に完全準拠した基本機能を提供します。 たとえば、com.sun.rowsetパッケージ内のリファレンス実装で提供されるすべての実装は、BaseRowSetクラスを実装の基盤として使用します。

    次の表に、BaseRowSet abstractクラスの機能を示します。

    BaseRowSetの機能
    Feature 詳細
    プロパティ アプリケーションにRowSetコマンドやプロパティ値の取得および設定を提供する標準JavaBeansプロパティ操作メカニズムを提供する。 標準RowSetプロパティの詳細については、javax.sql.RowSetインタフェースのマニュアル(JDBC 3.0仕様にて提供)を参照
    イベント通知 登録済みのイベント・リスナーに標準JavaBeansイベント通知を提供する。 準拠した実装で生成された標準のRowSetイベントを登録して処理する方法の詳細については、javax.sql.RowSetEvent interface (JDBC 3.0仕様で利用可能)のドキュメントを参照してください。
    RowSetオブジェクトのコマンドの設定 RowSetコマンド・パラメータを設定する設定メソッドの完全なセットを提供する。
    Streams ストリーム型を指定するための一連の定数のほか、ストリーム・インスタンスの格納フィールドを提供する。
  • 3.3 接続されたRowSetの要件

    JdbcRowSetは、常に元のデータ・ソースに接続している必要がある RowSetオブジェクトを記述します。 JdbcRowSetの実装は、この接続がJDBCドライバのみによって提供されていることを確認する必要があります。 また、JdbcRowSetインタフェースの実装になっており、接続環境で動作するRowSetオブジェクトは、RowSetReaderオブジェクトやRowSetWriterオブジェクトの取得にSyncFactoryを使用しません。 これらは、配下の更新およびスクロール可能なResultSet実装により、JDBCドライバを利用してニーズを満たすことができます。

  • 3.4 未接続のRowSetの要件

    CachedRowSetオブジェクトなど、未接続のRowSetオブジェクトは、SyncFactoryによって提供されるSyncProviderオブジェクトに接続管理を委譲する必要があります 完全に未接続にするためには、すべての未接続のRowSetオブジェクトは、RowSetオブジェクトの生成に利用された元のデータ・ソース接続がクローズし、ガベージ・コレクタがリソースを復元および解放できる状態になっていることを確認する必要があります SyncProviderオブジェクトは、同期が必要なときにデータ・ソース接続を再度確立するため、重要なJDBCプロパティが保持されていることを確認します。 したがって、未接続のRowSetオブジェクトは、Connectionオブジェクト上に外部参照がないことを確認する必要があります。

  • 3.5 RowSetMetaDataImplの役割

    RowsetMetaDataImplクラスは、RowSetMetaDataインタフェースの実装を提供するユーティリティ・クラスであり、接続されているか未接続であるかどうかに関係なく、すべてのRowSetオブジェクトのメタデータに標準の設定メソッド実装を提供します。 すべての実装は、この標準実装を自由に利用できますが、必ずしも利用する必要はありません。

  • 3.6 RowSetWarningクラス

    RowSetWarningクラスは、RowSet実装に設定可能な警告を提供します。 SQLWarningオブジェクトと同様に、RowSetWarningオブジェクトは、メッセージを表示せずに、警告をスローするメソッドを持つオブジェクトにチェーンされます。 すべてのRowSet実装は、警告が生成された場合にこのチェーンが発生することと、JdbcRowSetインタフェースかCachedRowSetインタフェースに定義されたgetRowSetWarningsメソッドから警告を使用できることを確認する必要があります getRowSetWarningsメソッドを使って警告を取得したあと、RowSetWarningメソッドgetNextWarningを呼び出して、チェーンされる警告を取得することができます。 警告が返された場合は、それ以上警告が表示されなくなるまで、繰り返しgetNextWarningを呼び出すことができます。

  • 3.7 ジョイン可能なインタフェース

    Joinableインタフェースは、接続されているか未接続であるかに関係なく、すべてのRowSetオブジェクトを、SQL JOIN操作でJoinRowSetオブジェクトに追加することができます。 Joinableインタフェースを実装しているRowSetオブジェクトは、一致列の設定、一致列の取得、または一致列の設定解除を行うことができます。 JoinRowSetオブジェクトは、RowSetオブジェクトの一致列を、RowSetオブジェクトを追加するための基盤として利用することができます。

  • 3.8 RowSetFactoryインタフェース

    新しいRowSetFactoryの実装が提供される必要があります

4.0 関連仕様

5.0 関連項目