深さの指定

ストアで複数キー操作を行う場合、操作対象のレコードの深さを指定できます。つまり、次の操作対象を指定できます。

デフォルトでは、複数キー操作では、指定されたキーとそのすべての子が操作されます。操作をそれ以外に限定するには、たとえば、キーの直下の子のみの場合は、Depth.CHILDREN_ONLYを操作のDepthパラメータに指定します。

たとえば、次のキーを使用するとします。

/Products/Hats/-/baseball
/Products/Hats/-/baseball/longbill
/Products/Hats/-/baseball/longbill/blue
/Products/Hats/-/baseball/longbill/red
/Products/Hats/-/baseball/shortbill
/Products/Hats/-/baseball/shortbill/blue
/Products/Hats/-/baseball/shortbill/red
/Products/Hats/-/western
/Products/Hats/-/western/felt
/Products/Hats/-/western/felt/black
/Products/Hats/-/western/felt/gray
/Products/Hats/-/western/leather
/Products/Hats/-/western/leather/black
/Products/Hats/-/western/leather/gray

さらに、次のレコードのみを取得するとします。

/Products/Hats/-/baseball
/Products/Hats/-/western 

これは、適切なDepth引数を指定してKVStore.multiGet()を使用することで行えます。

package kvstore.basicExample;

...

import oracle.kv.Depth;
import oracle.kv.Key;
import oracle.kv.RequestTimeoutException;
import oracle.kv.Value;
import oracle.kv.ValueVersion;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.SortedMap;

...

ArrayList<String> majorComponents = new ArrayList<String>();

...

// Define the major and minor path components for the key
majorComponents.add("Product");
majorComponents.add("Hats");

// Create the retrieval key
Key myKey = Key.createKey(majorComponents);

// Now retrieve the records. Note that we do not show the creation of 
// the kvstore handle here.

try {
    SortedMap<Key, ValueVersion> myRecords = null;

    myRecords = kvstore.multiGet(myKey,
                                 null,
                                 Depth.CHILDREN_ONLY);
} catch (RequestTimeoutException re) {
    // The operation was not completed within the 
    // timeout value
}