モジュール java.sql.rowset
パッケージ 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オブジェクトです。 次の例のcrs2は実装していないため、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 SQLの結果に直接影響を及ぼします。

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

導入されたバージョン:
1.5
関連項目: