Low-Level APIを使ってデータ・ストアを検索する

2011年2月22日(火)
清野 克行

2. エンティティ検索のサンプル

以下からは、エンティティ検索・参照のサンプル・プログラムを解説します。App Engineデータ・ストアにおける検索・参照処理は、

  1. キー検索でのデータ検索
  2. Queryオブジェクトを使用した条件検索

の2種類で行うことができます。最初に、キー検索の方法を解説します。

2.1. キー検索

(1)ルート・エンティティに対するキー検索

キー検索の最も典型的な方式は、ルート・エンティティに対するキー検索です。ここでのサンプルでは、テーブル(kind)を親子(所有・被所有)関係で構成していますが、一般には親子関係を構成しないでテーブルを使用する場合も多く、このような場合のキー検索は、必然的にルート・エンティティに対するキー検索になります。つまり、普通にテーブルを作成して検索する場合は、ルート・エンティティに対するキー検索になります。

【リスト1】: ルート・エンティティに対するキー検索

リスト1は、ルート・エンティティに対するキー検索のサンプルです。最初のimport文には前回説明したトランザクション処理用のパッケージも含まれていますが、全サンプルに共通するため、このあとのサンプルでは省略します。また、DatastoreServiceのインスタンスであるdsの生成についても、以後は省略します。

リスト1のキー検索では、

  • (1)createKeyの第1引数にkind名、第2引数にキー名をして、キーを生成します。
  • (2)ds(DatastoreServiceのインスタンス)のgetメソッドで、引数に(1)のキーを指定して実行します。

これで、キー指定されたエンティティが取得できます。このように、キー検索によってエンティティを取得するのは簡単です。後は、(3)のように、取得したエンティティ(omas)から、getPropertyメソッドを使ってプロパティ値を取得します。最後に(4)で、JSONフォーマットに変換してクライアントに送信します。

今回は、データ検索のサンプルが多いため、クライアント側の画面表示は解説しませんが、第1回で紹介したDWR(Direct Web Remoting)を使えば、クライアント・サーバー間でのデータ送受信を確認できます。

画面1: DWRのメソッド実行画面

画面1: DWRのメソッド実行画面

画面2: DWRでの実行結果

画面2: DWRでの実行結果

画面1は、DWRのメソッド実行画面です。この画面上でキー「omas001」を指定して「Execute」ボタンをクリックすると、Webクライアントに送信されるデータが表示されます(画面2)。なお、検索で使うordMasテーブル(kind)は、次のような内容になっています。

画面3: ordMasのエンティティ項目

画面3: ordMasのエンティティ項目

2.2. 被所有エンティティのキー検索

【リスト2】: 被所有エンティティのキー検索(revShopMas1)

被所有、つまり親を持つエンティティをキー検索する場合は、ルート・エンティティでキーを指定する必要があります。リスト2では、(1)でルート・エンティティのキーを取得しています。(2)では、取得したキーをcreateKeyの第1引数に指定して、検索キー(skey)を取得しています。このサンプルでは、検索するエンティティがルート・エンティティ直下のエンティティになっていますが、さらにその下の子エンティティと続く場合は、このような連鎖処理を続ける必要があります。

画面4: revShopMas1での検索結果

画面4: revShopMas1での検索結果

画面4は、revShopMas1の検索結果です。引数にordMasテーブル(ルート・エンティティ)のキー「omas001」とshopMasテーブルのキー「akiba01」を指定して、キー検索結果(受注金額=ordamt)を表示しています。

有限会社サイバースペース
慶應義塾大学工学部電気科卒。日本IBM、日本HPなどにおいて、製造装置業を中心とした業務系/基幹業務系システムのSE/マーケティングや、3階層C/Sアーキテクチャによる社内業務システム開発などに携わる。現在は、Ajax/Web 2.0関連のセミナー講師/コンサルティング、書籍執筆などを行っている。情報処理学会会員。http://www.at21.net/

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています