Service Registry 3 2005Q4 開発者ガイド

宣言型クエリーの使用

BusinessQueryManager インタフェースの代わりに DeclarativeQueryManager インタフェースを使用して、Service Registry に対するクエリーを作成および実行できます。SQL に習熟している場合は、宣言型クエリーの方が使いやすいことがあります。DeclarativeQueryManager インタフェースは、Query という別のインタフェースに依存しています。

DeclarativeQueryManager インタフェースには、createQueryexecuteQuery の 2 つのメソッドがあります。createQuery メソッドは、クエリータイプおよびクエリーを含む文字列を 2 つの引数として取ります。次のコードは、レジストリ内のすべての Service オブジェクトのリストを要求する SQL クエリーを作成します。ここで、rsRegistryService オブジェクトです。

DeclarativeQueryManager qm = rs.getDeclarativeQueryManager();
String qString = "select s.* from Service s";
Query query = qm.createQuery(Query.QUERY_TYPE_SQL, qString);

クエリーを作成したら、次のようにクエリーを実行します。

BulkResponse response = qm.executeQuery(query);
Collection objects = response.getCollection();

次に、通常のクエリーの場合と同じ方法で、応答からオブジェクトを抽出します。

SQL クエリーの構文の詳細と例については、ebRS 3.0 仕様の第 6 章「Query Management Protocols」、特にセクション 6.6 を参照してください。

宣言型クエリーの使用: 例

宣言型クエリーの使用例については、<INSTALL>/registry/samples/query-declarative/src ディレクトリにある JAXRQueryDeclarative.java および JAXRGetAllSchemes.java を参照してください。どちらのサンプルも、SQL クエリーを作成して実行します。クエリー文字列は JAXRExamples.properties ファイルで定義されています。

JAXRQueryDeclarative の SQL クエリー文字列は次のようになります。これは全体を 1 行に記述してください。


SELECT ro.* from RegistryObject ro, Name nm, Description d 
WHERE upper(nm.value) LIKE upper(’%free%’) AND upper(d.value) 
LIKE upper(’%free%’) AND (ro.id = nm.parent AND ro.id = d.parent)

このクエリーは、名前と説明の属性の両方に文字列 "free" を持つすべてのオブジェクトを検索します。

JAXRGetAllSchemes の SQL クエリー文字列は次のようになります。


SELECT * FROM ClassScheme s order by s.id

このクエリーは、レジストリ内のすべての分類スキーマを検索します。

ProcedureJAXRQueryDeclarative サンプルを実行するには

手順
  1. <INSTALL>/registry/samples/query-declarative ディレクトリに移動します。

  2. JAXRQueryDeclarative サンプルを実行するには、次のコマンドを入力します。


    asant get-free
    
  3. JAXRGetAllSchemes サンプルを実行するには、次のコマンドを入力します。


    asant get-schemes