JDBC メディエーター・ページング
指定された時間でメモリー内にプルされるデータの量を制限できるので 、ページングは大量のデータ・セットを介しての移動に有効です。 JDBC DMS API は、ページングを実装する 2 つのインターフェースを提供します。
Data Mediator Service (DMS) に提供されたメタデータがカスタマーを定 義し、またページ・サイズが 10 に設定された場合、先頭ページは最初の 10 のカスタマー DataObject を含む DataGraph です。 次のページは、次の 10 人のカスタマーを持つ別の DataGraph で、以下同様に続きます。
1 つ注意しなければならないことは、JDBC DMS はグラフのルートにページングを提供するということです。 すなわち、戻された関連 DataObject の数には制限がありません。 例えば、DMS に提供されたメタデータが、カスタマーおよび関連したオーダーを定義する場合、ページされるのはカスタマーです。 ページ・サイズが 10 に設定されている場合、先頭ページは最初の 10 人の カスタマー、およびそれぞれのカスタマーの関連したすべてのオーダーを持つグラフです。
DMS が提供する、利用することが可能な 2 つのインターフェース、Pager および CountingPager があります。 Pager インターフェースは、カーソルのような next() メソッド機能を提供します。 next() 機能は、メディエーター・メタデータによって指定されるデータ・セット全体から、データの次のページを表すグラフを戻します。 また、移動する方向が逆方向であるだけで同じ機能を持つ previous() 機能が利用可能です。 CountingPager インターフェースによって、特定のページ番号を検査することが可能になります。 以下の例は、ルート・テーブルからページあたり最大 5 つの DataObject で、 CountingPager インターフェースを使用する、カスタマー・インスタンスのラージ・セットを介したページングを図示しています。
CountingPager pager = PagerFactory.soleInstance.createCountingPager(5);
int count = pager.pageCount(mediator);
for (int i = 1, i <= count, i++) {
DataObject graph = pager.page(i, mediator);
// Iterate through all returned customers in the
// current page.
Iterator iter = graph.getList("CUSTOMER").iterator();
while (iter.hasNext()) {
DataObject cust = (DataObject) iter.next();
System.out.println(cust.getString("CUSTFIRS NAME"));
}
}
先頭ページより前、または有効な最終ページより後に移動しようとすると、JDBC メディエーター例外が発生します。