|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
public interface JoinRowSet
JoinRowSet
インタフェースは、異なった RowSet
オブジェクトの関連データを、SQL JOIN
を表す 1 つの JoinRowSet
オブジェクトにまとめる機構を提供します。つまり、JoinRowSet
オブジェクトは、SQL JOIN
関係を形成する RowSet
オブジェクトからのデータのコンテナとして動作します。
Joinable
インタフェースは、SQL JOIN
関係確立の基盤となる一致列の設定、取得、および設定解除のメソッドを提供します。または、一致列は JointRowSet
の addRowSet
メソッドの適切なバージョンを指定することによっても設定できます。
RowSet
オブジェクト (CachedRowSet
オブジェクトと、CachedRowSet
インタフェースを拡張する実装) は、データソースに再接続する手間なしで、RowSet
オブジェクト間に SQL JOIN
を確立する標準の方法を持ちません。JoinRowSet
インタフェースは、このニーズに対応するために設計されています。
Joinable
オブジェクトに RowSet
オブジェクトを追加して、SQL JOIN
関係を構成できます。つまり、RowSet
オブジェクトは、接続されている場合でも未接続の場合でも、JOIN
を構成することができます。接続環境で動作する RowSet
オブジェクト (JdbcRowSet
オブジェクト) は、すでに接続しているデータベースを使って、表間に直接 SQL JOIN
関係を確立することをお勧めします。しかし、必要に応じて、JoinRowSet
オブジェクトに JdbcRowSet
オブジェクトを追加することもできます。
単一の SQL JOIN
に関連付けられる JoinRowSet
のインスタンスであれば、任意の数の RowSet
オブジェクトを JoinRowSet
のインスタンスに追加できます。定義によると、SQL JOIN
文は、複数のリレーショナルデータベーステーブルに格納されたデータを、共通の属性に基づいてまとめるために使用されます。Joinable
インタフェースは、「一致列」の設定により共通属性を作成するメソッドを提供します。一致列は、一般的に主キーと一致しますが、必ずしも一致列が主キーと同一である必要はありません。列の一致を確立し、適用することで、JoinRowSet
オブジェクトは、使用可能なリレーショナルデータベースを使用せずに、RowSet
オブジェクト間に JOIN
関係を確立します。
確立される JOIN
の型は、setJoinType
メソッドを使って JoinRowSet
定数を 1 つ設定することで決定されます。次の SQL JOIN
型を設定できます。
CROSS_JOIN
FULL_JOIN
INNER_JOIN
- JOIN
型が設定されていない場合のデフォルト
LEFT_OUTER_JOIN
RIGHT_OUTER_JOIN
JOIN
は自動的に内部結合になります。JoinRowSet
インタフェースのフィールドのコメントに、標準 SQL JOIN
型であるこれらの JOIN
型が説明されています。
JoinRowSet
オブジェクトによる JOIN
の作成JoinRowSet
オブジェクトの作成時には、このオブジェクトは空の状態です。最初に追加された RowSet
オブジェクトが JOIN
関係の基盤になります。アプリケーションでは、JoinRowSet
オブジェクトに追加する各 RowSet
オブジェクトのどの列を一致列にするかを決定する必要があります。すべての RowSet
オブジェクトに一致列が格納され、各一致列の値は、ほかの一致列の値と比較可能な値である必要があります。列には同じ名前を付けることが多いですが、その必要はなく、比較可能なデータ型であれば、まったく同じデータ型を格納する必要もありません。
一致列は、次の 2 とおりの方法で設定できます。
Joinable
の setMatchColumn
メソッドの呼び出しによる設定。RowSet
オブジェクトを JoinRowSet
オブジェクトに追加する前に一致列を設定できる唯一の方法です。setMatchColumn
メソッドを使うには、RowSet
オブジェクトが Joinable
インタフェースを実装している必要があります。一致列値を設定したら、このメソッドを使用して、いつでも一致列をリセットできます。JoinRowSet
の addRowSet
メソッドのいずれかのバージョンの呼び出しによる設定。addRowSet
メソッドのうち 4 つは、一致列をパラメータに取ります。これらの 4 つのメソッドは、RowSet
オブジェクトが JoinRowSet
オブジェクトへ追加されるときに、一致列を設定またはリセットします。
次のコードの抜粋では、JoinRowSet
オブジェクトに 2 つの CachedRowSet
オブジェクトを追加します。この例では、SQL JOIN
型ではなく、デフォルトの JOIN
型である INNER_JOIN が確立されている点に注目してください。
次のコードの抜粋では、表 EMPLOYEES
(最初の列 EMP_ID
が一致列に設定されている) が、JoinRowSet
オブジェクト jrs に追加されます。続いて、表 ESSP_BONUS_PLAN
(一致列は同じく EMP_ID
列) が追加されます。この 2 番目の表が jrs に追加されるとき、 追加されるのは、表 EMPLOYEES
内の EMP_ID
値に一致した EMP_ID
値を持つ ESSP_BONUS_PLAN
内の列だけです。この場合、ボーナス制度 (bonus plan) の全員が従業員 (employee) であるため、表 ESSP_BONUS_PLAN
のすべての行が JoinRowSet
オブジェクトに追加されます。この例では、追加される両方の CachedRowSet
オブジェクトが Joinable
インタフェースを実装しているため、Joinable
の setMatchColumn
メソッドを呼び出すことができます。
JoinRowSet jrs = new JoinRowSetImpl(); ResultSet rs1 = stmt.executeQuery("SELECT * FROM EMPLOYEES"); CachedRowSet empl = new CachedRowSetImpl(); empl.populate(rs1); empl.setMatchColumn(1); jrs.addRowSet(empl); ResultSet rs2 = stmt.executeQuery("SELECT * FROM ESSP_BONUS_PLAN"); CachedRowSet bonus = new CachedRowSetImpl(); bonus.populate(rs2); bonus.setMatchColumn(1); // EMP_ID is the first column jrs.addRowSet(bonus);
この時点で、jrs は、2 つの RowSet
オブジェクトの EMP_ID
列に基づく内部 JOIN になります。アプリケーションは、あたかも単一の RowSet
オブジェクトをブラウズするかのようにして、結合されたデータをブラウズできます。jrs 自体が RowSet
オブジェクトなので、アプリケーションは、RowSet
メソッドを使って、jrs のナビゲートや変更を行うことができます。
jrs.first(); int employeeID = jrs.getInt(1); String employeeName = jrs.getString(2);
アプリケーションが 2 番目または後続の RowSet
オブジェクトを追加する場合は、SQL JOIN
を適用する必要があるので、JOIN
の実行時に初期パフォーマンスが低下する可能性があります。
次のコードの抜粋は、その他の CachedRowSet
オブジェクトを追加します。この例では、JoinRowSet
オブジェクトに CachedRowSet
が追加されるとき、一致列 (EMP_ID
) が設定されます。
ResultSet rs3 = stmt.executeQuery("SELECT * FROM 401K_CONTRIB"); CachedRowSet fourO1k = new CachedRowSetImpl(); four01k.populate(rs3); jrs.addRowSet(four01k, 1);
JoinRowSet
オブジェクト jrs に、3 つの表の値がすべて追加されました。EMP_ID
列の値が jrs 内の EMP_ID
列の値と一致している four01k 内の各行のデータが、jrs に追加されています。
JoinRowSet
メソッドJoinRowSet
インタフェースは、RowSet
オブジェクトの追加や JoinRowSet
オブジェクトの情報の取得を行う複数のメソッドを提供します。
RowSet
オブジェクトを追加するメソッドRowSet
オブジェクトを追加することも、または同時に複数の RowSet
オブジェクトを追加することもできます。どちらの場合でも、メソッドは、追加される各 RowSet
オブジェクトの一致列を指定できます。
JoinRowSet
オブジェクト内の RowSet
オブジェクトを取得するメソッド、RowSet
名を取得するメソッドのほか、JOIN
を構成するために背後で使用される SQL WHERE
節か、WHERE
節の実行内容を説明するテキストを取得するメソッドがあります。
JOIN
の型に関連するメソッドJOIN
型を設定するメソッドが 1 つ、JoinRowSet
オブジェクトが指定された型をサポートするかどうかを確認するメソッドが 5 つあります。
JoinRowSet
オブジェクトのコピーを作成するメソッド
フィールドの概要 | |
---|---|
static int |
CROSS_JOIN
2 つの表のクロス製品を提供する ANSI 型 JOIN です。 |
static int |
FULL_JOIN
完全 JOIN を提供する ANSI 型 JOIN です。 |
static int |
INNER_JOIN
2 つの表を内部結合させる ANSI 型 JOIN です。 |
static int |
LEFT_OUTER_JOIN
2 つの表を左外部結合させる ANSI 型 JOIN です。 |
static int |
RIGHT_OUTER_JOIN
2 つの表を右外部結合させる ANSI 型 JOIN です。 |
インタフェース 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 |
メソッドの概要 | |
---|---|
void |
addRowSet(Joinable rowset)
指定された RowSet オブジェクトをこの JoinRowSet オブジェクトに追加します。 |
void |
addRowSet(RowSet[] rowset,
int[] columnIdx)
指定された RowSet オブジェクトの配列に含まれる 1 つ以上の RowSet オブジェクトをこの JoinRowSet オブジェクトに追加し、各 RowSet オブジェクトの一致列を指定された列インデックスの配列内の一致列に設定します。 |
void |
addRowSet(RowSet[] rowset,
String[] columnName)
指定された RowSet オブジェクトの配列に含まれる 1 つ以上の RowSet オブジェクトをこの JoinRowSet オブジェクトに追加し、各 RowSet オブジェクトの一致列を指定された列名の配列内の一致列に設定します。 |
void |
addRowSet(RowSet rowset,
int columnIdx)
指定された RowSet オブジェクトをこの JoinRowSet オブジェクトに追加し、指定された列を RowSet オブジェクトの一致列として設定します。 |
void |
addRowSet(RowSet rowset,
String columnName)
rowset をこの JoinRowSet オブジェクトに追加し、指定された列を一致列に設定します。 |
int |
getJoinType()
この JoinRowSet インスタンスを管理する SQL JOIN 型を記述する int を返します。 |
String[] |
getRowSetNames()
この JoinRowSet オブジェクトに追加された RowSet オブジェクトの名前を含む String 配列を返します。 |
Collection<?> |
getRowSets()
この JoinRowSet オブジェクトに追加された RowSet オブジェクトを含む Collection オブジェクトを返します。 |
String |
getWhereClause()
JoinRowSet オブジェクトで使用される、SQL によく似た WHERE 節の記述を返します。 |
void |
setJoinType(int joinType)
アプリケーションに、JoinRowSet オブジェクトインスタンス内の表に適用される JOIN の型の調整を許可します。 |
boolean |
supportsCrossJoin()
JoinRowSet 実装が CROSS_JOIN をサポートするかどうかを示します。 |
boolean |
supportsFullJoin()
JoinRowSet 実装が FULL_JOIN をサポートするかどうかを示します。 |
boolean |
supportsInnerJoin()
JoinRowSet 実装が INNER_JOIN をサポートするかどうかを示します。 |
boolean |
supportsLeftOuterJoin()
JoinRowSet 実装が LEFT_OUTER_JOIN をサポートするかどうかを示します。 |
boolean |
supportsRightOuterJoin()
JoinRowSet 実装が RIGHT_OUTER_JOIN をサポートするかどうかを示します。 |
CachedRowSet |
toCachedRowSet()
この JoinRowSet オブジェクト内のデータを含む新しい CachedRowSet オブジェクトを作成します。 |
インタフェース javax.sql.rowset.WebRowSet から継承されたメソッド |
---|
readXml, readXml, writeXml, writeXml, writeXml, writeXml |
インタフェース javax.sql.rowset.Joinable から継承されたメソッド |
---|
getMatchColumnIndexes, getMatchColumnNames, setMatchColumn, setMatchColumn, setMatchColumn, setMatchColumn, unsetMatchColumn, unsetMatchColumn, unsetMatchColumn, unsetMatchColumn |
フィールドの詳細 |
---|
static final int CROSS_JOIN
JOIN
です。
static final int INNER_JOIN
JOIN
です。結合した表のいずれかに一致しない行がある場合、この行は削除されます。
static final int LEFT_OUTER_JOIN
JOIN
です。SQL では、JOIN 文の左側からすべてのレコードが返される位置として記述されます。
static final int RIGHT_OUTER_JOIN
JOIN
です。SQL では、左側の表に一致するレコードがない場合でも、JOIN 文の右側の表からすべてのレコードが返される位置として記述されます。
static final int FULL_JOIN
JOIN
です。一方の表から、もう一方の表の一致レコードとは無関係に返されるすべての行を指定します。
メソッドの詳細 |
---|
void addRowSet(Joinable rowset) throws SQLException
RowSet
オブジェクトをこの JoinRowSet
オブジェクトに追加します。RowSet
オブジェクトがこの JoinRowSet
オブジェクトに追加される最初のオブジェクトである場合、JOIN
関係が確立される基盤となります。
このメソッドは、指定された RowSet
オブジェクトが Joinable
の setMatchColumn
メソッドで設定された一致列をすでに持っている場合にのみ使用する必要があります。
注 : Joinable
オブジェクトは、Joinable
インタフェースを実装している任意の RowSet
オブジェクトです。
rowset
- この JoinRowSet
オブジェクトに追加される RowSet
オブジェクト。Joinable
インタフェースを実装し、一致列セットを持っている必要がある
SQLException
- (1) この JoinRowSet
オブジェクトに空の行セットが追加された場合、(2) rowset に一致列が設定されていない場合、(3) rowset がアクティブな JOIN
に違反する場合Joinable.setMatchColumn(int)
void addRowSet(RowSet rowset, int columnIdx) throws SQLException
RowSet
オブジェクトをこの JoinRowSet
オブジェクトに追加し、指定された列を RowSet
オブジェクトの一致列として設定します。RowSet
オブジェクトがこの JoinRowSet
オブジェクトに追加される最初のオブジェクトである場合、JOIN
関係が確立される基盤となります。
このメソッドは、RowSet がまだ一致列セットを持たない場合に使用されます。
rowset
- この JoinRowSet
オブジェクトに追加される RowSet
オブジェクト。Joinable
インタフェースを実装できるcolumnIdx
- 一致列になる列を示す int
SQLException
- (1) rowset が空の行セットの場合、(2) rowset がアクティブな JOIN
に違反する場合Joinable.unsetMatchColumn(int)
void addRowSet(RowSet rowset, String columnName) throws SQLException
JoinRowSet
オブジェクトに追加し、指定された列を一致列に設定します。rowset がこの JoinRowSet
オブジェクトに追加される最初のオブジェクトである場合、JOIN
関係が確立される基盤となります。
このメソッドは、指定された RowSet
オブジェクトがまだ一致列を持たない場合に使用されます。
rowset
- この JoinRowSet
オブジェクトに追加される RowSet
オブジェクト。Joinable
インタフェースを実装できるcolumnName
- 一致列として設定される列の名前を指定する String
オブジェクト
SQLException
- (1) rowset が空の行セットの場合、(2) rowset の一致列が JOIN
の条件を満たしていない場合void addRowSet(RowSet[] rowset, int[] columnIdx) throws SQLException
RowSet
オブジェクトの配列に含まれる 1 つ以上の RowSet
オブジェクトをこの JoinRowSet
オブジェクトに追加し、各 RowSet
オブジェクトの一致列を指定された列インデックスの配列内の一致列に設定します。columnIdx の最初の要素は、rowset 内の最初の RowSet
オブジェクトの一致列、columnIdx の 2 番目の要素は rowset 内の 2 番目の要素の一致列 (以下同様) に設定されます。
この JoinRowSet
オブジェクトに追加される最初の RowSet
オブジェクトが、JOIN
関係の基盤になります。
このメソッドは、指定された RowSet
オブジェクトがまだ一致列を持たない場合に使用されます。
rowset
- JOIN
に追加される 1 つ以上の RowSet
オブジェクトの配列。Joinable
インタフェースを実装できるcolumnIdx
- 列のインデックスを rowset 内の RowSet
オブジェクトの一致列として設定するように指定する int
値の配列
SQLException
- (1) この JoinRowSet
オブジェクトに空の行セットが追加された場合、(2) rowset 内の RowSet
オブジェクトに一致列が設定されていない場合、(3) 追加される RowSet
オブジェクトがアクティブな JOIN
に違反する場合void addRowSet(RowSet[] rowset, String[] columnName) throws SQLException
RowSet
オブジェクトの配列に含まれる 1 つ以上の RowSet
オブジェクトをこの JoinRowSet
オブジェクトに追加し、各 RowSet
オブジェクトの一致列を指定された列名の配列内の一致列に設定します。columnName の最初の要素は、rowset 内の最初の RowSet
オブジェクトの一致列、columnName の 2 番目の要素は rowset 内の 2 番目の要素の一致列 (以下同様) に設定されます。
この JoinRowSet
オブジェクトに追加される最初の RowSet
オブジェクトが、JOIN
関係の基盤になります。
このメソッドは、指定された RowSet
オブジェクト (複数可) がまだ一致列を持たない場合に使用されます。
rowset
- JOIN
に追加される 1 つ以上の RowSet
オブジェクトの配列。Joinable
インタフェースを実装できるcolumnName
- 列の名前を rowset 内の RowSet
オブジェクトの一致列として設定するように指定する String
値の配列
SQLException
- (1) この JoinRowSet
オブジェクトに空の行セットが追加された場合、(2) rowset 内の RowSet
オブジェクトに一致列が設定されていない場合、(3) 追加される RowSet
オブジェクトがアクティブな JOIN
に違反する場合Collection<?> getRowSets() throws SQLException
JoinRowSet
オブジェクトに追加された RowSet
オブジェクトを含む Collection
オブジェクトを返します。JOIN
内の RowSet 数 n を返し、この共用体内で発生したすべての更新を保持します。
JoinRowSet
オブジェクトに追加された RowSet
オブジェクトで構成される Collection
オブジェクト
SQLException
- 返される Collection
オブジェクトの生成時にエラーが発生した場合String[] getRowSetNames() throws SQLException
JoinRowSet
オブジェクトに追加された RowSet
オブジェクトの名前を含む String
配列を返します。
JoinRowSet
オブジェクト内の RowSet
オブジェクトの名前を含む String
配列
SQLException
- RowSet
オブジェクトの名前の取得時にエラーが発生した場合CachedRowSet.setTableName(java.lang.String)
CachedRowSet toCachedRowSet() throws SQLException
JoinRowSet
オブジェクト内のデータを含む新しい CachedRowSet
オブジェクトを作成します。これは、CachedRowSet
オブジェクトの SyncProvider
オブジェクトを使って、データソースに保存することができます。
JoinRowSet に更新または変更を適用した場合、メソッドによって返される CachedRowSet は、その変更をデータソース内の元の行と表内に持続させることができません。返される CachedRowSet インスタンスには、変更データは含まれません。また、元の SQL 文のすべてのプロパティが消去されます。アプリケーションは、RowSet.setCommand
メソッドを使って、この SQL 文をリセットする必要があります。
変更を元の表のデータソースに持続させるためには、acceptChanges
メソッドを JoinRowSet オブジェクトインスタンス上に呼び出します。実装では、実装内の内部データと更新追跡機能を利用して、SyncProvider と対話し、変更を持続させられます。
SQLException
- CachedRowSet オブジェクトのアセンブル時にエラーが発生した場合RowSet
,
CachedRowSet
,
SyncProvider
boolean supportsCrossJoin()
boolean supportsInnerJoin()
boolean supportsLeftOuterJoin()
boolean supportsRightOuterJoin()
boolean supportsFullJoin()
void setJoinType(int joinType) throws SQLException
JOIN
の型の調整を許可します。実装は、指定された JOIN
型をサポートしない場合、SQLException をスローします。
joinType
- JoinRowSet インスタンスをただちに再構成する、SQL JOIN
の標準 JoinRowSet.XXX static フィールド定義
SQLException
- サポートされていない JOIN
型が設定された場合getJoinType()
String getWhereClause() throws SQLException
JOIN
の SQL 文字列記述を提供することにより、SQL JOIN
の WHERE 節を記述できます。または、JoinRowSet
を使用して、アプリケーションを補助するテキスト記述を提供できます。
SQLException
- WHERE 節の表現の生成時にエラーが発生した場合int getJoinType() throws SQLException
JOIN
型を記述する int
を返します。返される型は標準 JoinRowSet 型 (CROSS_JOIN
、INNER_JOIN
、LEFT_OUTER_JOIN
、RIGHT_OUTER_JOIN
、または FULL_JOIN
) のいずれかになります。
JOIN
の標準 JoinRowSet static フィールド定義のいずれかの joinType。明示的に型が設定されていない場合は、デフォルトの JOIN
型として JoinRowSet.INNER_JOIN
が返される
SQLException
- JoinRowSet インスタンスによってサポートされる SQL JOIN
型の判断時にエラーが発生した場合setJoinType(int)
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。