|
JavaTM Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
public interface FilteredRowSet
FilteredRowSet
のすべての標準実装が実装しなければならない標準インタフェースです。FilteredRowSetImpl クラスは、必要に応じて拡張可能なリファレンス実装を提供します。ベンダーは、このインタフェースを実装することによって、独自のバージョンを実装できます。
RowSet
オブジェクトで、ある程度のコンテンツフィルタリング機能を提供しなければならない場合があります。この場合、1 つの可能性のある解決方法として、すべての標準 RowSet
実装のクエリー言語を提供する方法があります。 しかし、これは未接続の RowSet
オブジェクトなどの軽量コンポーネントには現実的な方法ではありません。FilteredRowSet
インタフェースは、膨大なクエリー言語とそれに伴う処理を提供することなく、このニーズに対応できる必要があります。
JDBC FilteredRowSet
標準実装は、RowSet
インタフェースを実装し、CachedRowSet
TM クラスを拡張します。CachedRowSet
クラスは、protected カーソル操作メソッドのセットを提供します。 FilteredRowSet
実装は、これらのメソッドをオーバーライドして、フィルタリング機能を提供することができます。
createShared
メソッドを使って FilteredRowSet
実装を共有している場合、すべての FilteredRowSet
インスタンスの複製で、変更を加えることなくプレディケートを共有する必要があります。
プレディケートを実装した場合 (プレディケートクラスの JavaDoc の例を参照)、FilteredRowSet
を次のように使用することができます。
上記の例では、プレディケートインタフェースを実装する
FilteredRowSet frs = new FilteredRowSetImpl();
frs.populate(rs);
Range name = new Range("Alpha", "Bravo", "columnName");
frs.setFilter(name);
frs.next() // only names from "Alpha" to "Bravo" will be returned
Range
オブジェクトを初期化しています。このオブジェクトには、この FilteredRowSet
オブジェクトから出力または変更されたすべての行が、columnName 列内の Alpha から Bravo の範囲に収まる必要があります。フィルタの範囲内に収まるデータを格納しない FilteredRowSet
オブジェクトにフィルタが適用された場合は、行が返されません。
このフレームワークでは、クエリー言語処理を利用することなく、predicate を実装する複数のクラスを、必要なフィルタリング結果と組み合わせて使用することができます。
FilteredRowSet
オブジェクトの更新FilteredRowSet
の predicate セットは、RowSet
オブジェクト内のすべての行に基準を適用し、RowSet
オブジェクト内の行のサブセットを管理します。この基準では、可視の行のサブセットを制御できるだけでなく、行の変更、削除、または挿入の基準を定義することもできます。
したがって、FilteredRowSet
オブジェクト上の predicate セットは双方向と見なされ、セット基準は FilteredRowSet
オブジェクトのすべてのビューおよび更新のゲート機構と見なされます。基準に違反する FilteredRowSet
を更新しようとすると、SQLException
オブジェクトがスローされます。
FilteredRowSet
範囲基準は、FilteredRowSet
インスタンスに、新しいプレディケートオブジェクトを適用することで、いつでも変更できます。この処理は、FilteredRowSet
オブジェクトへの追加参照が検出されない場合も実行可能です。新しいフィルタは、FilteredRowSet
オブジェクト内の基準の適用にただちに影響を及ぼし、後続のすべてのビューおよび更新に同じ基準が適用されます。
FilteredRowSet
オブジェクトに設定されたフィルタの範囲外の行は、フィルタを削除するか、新しいフィルタを適用するまで変更できません。
さらに、フィルタの境界内に収まる行のみが、データソースと同期されます。
フィールドの概要 |
---|
インタフェース javax.sql.rowset.WebRowSet から継承されたフィールド |
---|
PUBLIC_XML_SCHEMA, SCHEMA_SYSTEM_ID |
インタフェース javax.sql.rowset.CachedRowSet から継承されたフィールド |
---|
COMMIT_ON_ACCEPT_CHANGES |
インタフェース java.sql.ResultSet から継承されたフィールド |
---|
CLOSE_CURSORS_AT_COMMIT, CONCUR_READ_ONLY, CONCUR_UPDATABLE, FETCH_FORWARD, FETCH_REVERSE, FETCH_UNKNOWN, HOLD_CURSORS_OVER_COMMIT, TYPE_FORWARD_ONLY, TYPE_SCROLL_INSENSITIVE, TYPE_SCROLL_SENSITIVE |
メソッドの概要 | |
---|---|
Predicate |
getFilter()
この FilteredRowSet オブジェクトのアクティブなフィルタを取得します。 |
void |
setFilter(Predicate p)
この FilteredRowSet オブジェクトに、指定されたプレディケートオブジェクトを適用します。 |
インタフェース javax.sql.rowset.WebRowSet から継承されたメソッド |
---|
readXml, readXml, writeXml, writeXml, writeXml, writeXml |
インタフェース java.sql.Wrapper から継承されたメソッド |
---|
isWrapperFor, unwrap |
インタフェース javax.sql.rowset.Joinable から継承されたメソッド |
---|
getMatchColumnIndexes, getMatchColumnNames, setMatchColumn, setMatchColumn, setMatchColumn, setMatchColumn, unsetMatchColumn, unsetMatchColumn, unsetMatchColumn, unsetMatchColumn |
メソッドの詳細 |
---|
void setFilter(Predicate p) throws SQLException
FilteredRowSet
オブジェクトに、指定されたプレディケートオブジェクトを適用します。
フィルタは、着信ビューと送信ビューの両方を制御し、可視の行や操作可能な行を制限します。
新しいプレディケートオブジェクトはいつでも設定可能です。設定すると、RowSet
オブジェクトのデータに課された制約が変更されます。また、複数のコンポーネントが単一の FilteredRowSet
で処理されるため、実行時にフィルタを変更すると、問題が発生します。アプリケーション開発者は、配下のプレディケートオブジェクトが変更されたとき、FilteredRowSet
オブジェクトの複数のハンドルを管理する責任を負う必要があります。
p
- この FilteredRowSet
オブジェクトのフィルタを定義する プレディケートオブジェクト。null 値を設定すると、 プレディケートを消去して、すべての行を可視にすることができる
SQLException
- プレディケートオブジェクトの設定時に エラーが発生した場合Predicate getFilter()
FilteredRowSet
オブジェクトのアクティブなフィルタを取得します。
FilteredRowSet
オブジェクトのプレディケート。 フィルタが設定されていない場合は null
|
JavaTM Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。