JavaTM 2 Platform
Standard Ed. 5.0

javax.sql.rowset
インタフェース Joinable

既知のサブインタフェースの一覧:
CachedRowSet, FilteredRowSet, JdbcRowSet, JoinRowSet, WebRowSet

public interface Joinable

1.0 背景

Joinable インタフェースは、一致列の取得と設定のメソッドを提供します。これは RowSet オブジェクトを JoinRowSet オブジェクトに追加することによって形成される SQL JOIN の形成の基礎となります。

標準 RowSet 実装は、JoinRowSet オブジェクトに追加するために、Joinable インタフェースを実装できます。このインタフェースを実装すると、RowSet オブジェクトで、一致列の設定、取得、情報の取得ができる Joinable メソッドを使用できるようになります。アプリケーションは Joinable インタフェースを実装していない RowSet オブジェクトを JoinRowSet オブジェクトに追加できますが、このためには、RowSet オブジェクトと一致列の両方、または RowSet オブジェクトの配列と一致列の配列の両方をとるいずれかの JoinRowSet.addRowSet メソッドを使用する必要があります。

Joinable インタフェースのメソッドにアクセスするには、RowSet オブジェクトで 5 つの標準 RowSet インタフェースのうち少なくとも 1 つのインタフェースを実装し、さらに Joinable インタフェースも実装します。また、ほとんどの RowSet オブジェクトは BaseRowSet クラスを拡張します。次に例を示します。


     class MyRowSetImpl extends BaseRowSet implements CachedRowSet, Joinable {
         :
         :
     }
 

2.0 用法のガイドライン

Joinable インタフェース内のメソッドで、RowSet オブジェクトは、一致列 (SQL JOIN のベースとなる列) の設定、一致列の取得、または一致列の設定解除を行います。これらのメソッドを実装するクラスのインスタンスを JoinRowSet オブジェクトに追加することで、SQL JOIN 関係を確立できます。


     CachedRowSet crs = new MyRowSetImpl();
     crs.populate((ResultSet)rs);
     (Joinable)crs.setMatchColumnIndex(1);

     JoinRowSet jrs = new JoinRowSetImpl();
     jrs.addRowSet(crs);
 
上記の例では、crsJoinable インタフェースを実装した CachedRowSet オブジェクトです。次の例の crs2Joinable インタフェースを実装していないため、addRowSet メソッドの引数として一致列を指定する必要があります。この例では、列 1 を一致列としています。
 CachedRowSet crs2 = new MyRowSetImpl(); crs2.populate((ResultSet)rs);      JoinRowSet jrs2 = new JoinRowSetImpl(); jrs2.addRowSet(crs2, 1); 

JoinRowSet インタフェースの利用により、単一の表にまとめられた 1 つ以上の RowSet オブジェクトからデータを取得できるようになります。このとき、データベースとの接続を作成する必要はありません。そのため、未接続の RowSet オブジェクトで使用することに適しています。それでも、接続しているかどうかに関係なく、すべての RowSet オブジェクトがこのインタフェースを実装できます。常にデータソースに接続されている JdbcRowSet オブジェクトは、JoinRowSet オブジェクトに含めなくても、 直接 SQL JOIN に含めることができます。

3.0 複数の一致列の管理

setMatchColumn メソッドに渡されるインデックス配列は、設定される一致列の数 (配列の長さ) と、マッチングに使用される列を示します。次の例を参照してください。

     int[] i = {1, 2, 4, 7}; // indicates four match columns, with column
                             // indexes 1, 2, 4, 7 participating in the JOIN.
     Joinable.setMatchColumn(i);
 
後続の一致列は、次のように別の Joinable オブジェクト (Joinable インタフェースを実装している RowSet オブジェクト) に追加できます。

     int[] w = {3, 2, 5, 3};
     Joinable2.setMatchColumn(w);
 
複数の RowSet オブジェクトを JoinRowSet オブジェクトに追加するとき、配列インデックスの順序は特に重要です。配列の各インデックスは、以前に追加した RowSet オブジェクトの対応するインデックスと直接対応します。オーバーラップやアンダーラップが発生した場合、一致列のデータは、Joinable を実装した RowSet が追加されたイベント内に保持され、一致列データに関連付ける必要があります。したがって、アプリケーションは、複数の一致列を任意の順番で設定できますが、この順番は SQL JOIN の結果に直接影響を及ぼします。

このことは、一致列を示すために列インデックスではなく列名を使用する場合にもまったく同様です。

関連項目:
JoinRowSet

メソッドの概要
 int[] getMatchColumnIndexes()
          setMatchColumn(int[] columnIdxes) メソッドを使って、この RowSet オブジェクトに設定された一致列のインデックスを取得します。
 String[] getMatchColumnNames()
          setMatchColumn(String [] columnNames) メソッドを使って、この RowSet オブジェクトに設定された一致列の名前を取得します。
 void setMatchColumn(int columnIdx)
          指定された列をこの RowSet オブジェクトの一致列として設定します。
 void setMatchColumn(int[] columnIdxes)
          指定された列をこの RowSet オブジェクトの一致列として設定します。
 void setMatchColumn(String columnName)
          指定された列をこの RowSet オブジェクトの一致列として設定します。
 void setMatchColumn(String[] columnNames)
          指定された列をこの RowSet オブジェクトの一致列として設定します。
 void unsetMatchColumn(int columnIdx)
          この RowSet オブジェクトの一致列として指定された列の設定を解除します。
 void unsetMatchColumn(int[] columnIdxes)
          この RowSet オブジェクトの一致列として指定された列の設定を解除します。
 void unsetMatchColumn(String columnName)
          この RowSet オブジェクトの一致列として指定された列の設定を解除します。
 void unsetMatchColumn(String[] columnName)
          この RowSet オブジェクトの一致列として指定された列の設定を解除します。
 

メソッドの詳細

setMatchColumn

void setMatchColumn(int columnIdx)
                    throws SQLException
指定された列をこの RowSet オブジェクトの一致列として設定します。JoinRowSet オブジェクトは、一致列に基づいて、この RowSet オブジェクトを追加できます。

CachedRowSetTM などのサブインタフェースは CachedRowSet.setKeyColumns メソッドを定義します。このメソッドを使って、特定の列に主キーのセマンティクスを適用できます。setMatchColumn(int columnIdx) メソッドの実装では、CachedRowSet オブジェクトで主キー列を一致列として設定するときに、キー列の制約を維持する必要があります。

パラメータ:
columnIdx - 一致列として設定される列のインデックスを示す int
例外:
SQLException - 無効な列インデックスが設定された場合
関連項目:
setMatchColumn(int[]), unsetMatchColumn(int)

setMatchColumn

void setMatchColumn(int[] columnIdxes)
                    throws SQLException
指定された列をこの RowSet オブジェクトの一致列として設定します。JoinRowSet オブジェクトは、一致列に基づいて、この RowSet オブジェクトを追加できます。

パラメータ:
columnIdxes - 一致列として設定される列のインデックスを示す int の配列
例外:
SQLException - 無効な列インデックスが設定された場合
関連項目:
setMatchColumn(int[]), unsetMatchColumn(int[])

setMatchColumn

void setMatchColumn(String columnName)
                    throws SQLException
指定された列をこの RowSet オブジェクトの一致列として設定します。JoinRowSet オブジェクトは、一致列に基づいて、この RowSet オブジェクトを追加できます。

CachedRowSet インタフェースなどのサブインタフェースは CachedRowSet.setKeyColumns メソッドを定義します。このメソッドを使って、特定の列に主キーのセマンティクスを適用できます。setMatchColumn(String columnIdx) メソッドの実装では、CachedRowSet オブジェクトで主キー列を一致列として設定するときに、キー列の制約を維持する必要があります。

パラメータ:
columnName - 一致列として設定される列の名前を指定する String オブジェクト
例外:
SQLException - 無効な列名が設定された場合、列名が null の場合、または列名が空文字列の場合
関連項目:
unsetMatchColumn(int), setMatchColumn(int[])

setMatchColumn

void setMatchColumn(String[] columnNames)
                    throws SQLException
指定された列をこの RowSet オブジェクトの一致列として設定します。JoinRowSet オブジェクトは、一致列に基づいて、この RowSet オブジェクトを追加できます。

パラメータ:
columnNames - 一致列として設定される列の名前を指定する String オブジェクトの配列
例外:
SQLException - 無効な列名が設定された場合、列名が null の場合、または列名が空文字列の場合
関連項目:
unsetMatchColumn(int), setMatchColumn(int[])

getMatchColumnIndexes

int[] getMatchColumnIndexes()
                            throws SQLException
setMatchColumn(int[] columnIdxes) メソッドを使って、この RowSet オブジェクトに設定された一致列のインデックスを取得します。

戻り値:
この RowSet オブジェクトの一致列として設定された列のインデックスを示す int 配列
例外:
SQLException - 一致列が設定されていない場合
関連項目:
setMatchColumn(int), unsetMatchColumn(int)

getMatchColumnNames

String[] getMatchColumnNames()
                             throws SQLException
setMatchColumn(String [] columnNames) メソッドを使って、この RowSet オブジェクトに設定された一致列の名前を取得します。

戻り値:
この RowSet オブジェクトに一致列として設定された列の名前を指定する String オブジェクトの配列
例外:
SQLException - 一致列が設定されていない場合
関連項目:
setMatchColumn(int), unsetMatchColumn(int)

unsetMatchColumn

void unsetMatchColumn(int columnIdx)
                      throws SQLException
この RowSet オブジェクトの一致列として指定された列の設定を解除します。

Joinable インタフェースを実装する RowSet オブジェクトは、指定された列上で CachedRowSet.unsetKeyColumns メソッドが呼び出されるまで キーと同様の制約が実施されることを保証する必要があります。

パラメータ:
columnIdx - 一致列としての設定を解除される列のインデックスを示す int
例外:
SQLException - 無効な列インデックスが指定された場合、または指定された列が以前に一致列として設定されていない場合
関連項目:
setMatchColumn(int)

unsetMatchColumn

void unsetMatchColumn(int[] columnIdxes)
                      throws SQLException
この RowSet オブジェクトの一致列として指定された列の設定を解除します。

パラメータ:
columnIdxes - 一致列としての設定を解除される列のインデックスを示す int の配列
例外:
SQLException - 無効な列インデックスが指定された場合、または指定された列が以前に一致列として設定されていない場合
関連項目:
setMatchColumn(int)

unsetMatchColumn

void unsetMatchColumn(String columnName)
                      throws SQLException
この RowSet オブジェクトの一致列として指定された列の設定を解除します。

Joinable インタフェースを実装する RowSet オブジェクトは、指定された列上で CachedRowSet.unsetKeyColumns メソッドが呼び出されるまで キーと同様の制約が実施されることを保証する必要があります。

パラメータ:
columnName - 一致列としての設定を解除される列の名前を指定する String オブジェクト
例外:
SQLException - 無効な列名が指定された場合、または指定された列が以前に一致列として設定されていない場合
関連項目:
setMatchColumn(int)

unsetMatchColumn

void unsetMatchColumn(String[] columnName)
                      throws SQLException
この RowSet オブジェクトの一致列として指定された列の設定を解除します。

パラメータ:
columnName - 一致列としての設定を解除される列の名前を指定する String オブジェクトの配列
例外:
SQLException - 無効な列名が指定された場合、または指定された列が以前に一致列として設定されていない場合
関連項目:
setMatchColumn(int)

JavaTM 2 Platform
Standard Ed. 5.0

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java 2 SDK SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。