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

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)を表示しています。

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30