データの作成、更新、削除の方法を学んだ後、ORDAシリーズの新しいエントリを紹介します。今回は、オブジェクト指向でデータストアにクエリを発行する方法を紹介します。ORDAを使えば、クエリはより軽く、より読みやすくなり、オブジェクト指向の概念を使ってデータモデル全体をナビゲートすることができます !
さらに、ORDAでは、 複数の関連するテーブルへのクエリ、同じテーブルに対する再帰的なリレーションの管理、1つのクエリで複数の論理演算子の使用が非常に 簡単にできます。さらに、テーブル間のリレーションを手動または自動で設定する心配もありません!
Ordaクエリを始める
テーブルに対してクエリを実行するのと同様に、ORDAのクエリはデータクラス (テーブルに対応する) に対して実行されます。
データクラスにクエリを発行するには、いくつかの方法があります。以下は、その概要です。に関するより詳細な情報については query() メソッドに関する詳細な情報は、ドキュメントを参照してください。
1- 単一の文字列としてクエリを提供します。
以下は、ファーストネームが ‘S’ で始まるすべての従業員を取得するクエリです。
C_OBJECT($employees)
)
$employees :=ds.Employee.query("firstName='S@'" // Query on Employee table
2- プレースホルダーを使用してクエリと値を別々に提供する
ここで、ファーストネームが’D’または’E’で始まる従業員をすべて取得したいとしましょう。適用する値は クエリ内でオフセットされ、以下のように:1,:2, …:n で参照されることに注意してください。
C_OBJECT($employees)
)
$employees :=ds.Employee.query("firstName=:1 or firstName=:2"; "D@"; "E@" // Query on Employee table
バリエーション コレクションでプレースホルダーを使用して、値を指定することもできます。以下の例が示すように。
C_OBJECT($employees;$params)
// You can use a collection to provide values to apply in the query
$params:=New object
$params .
parameters:=New collection("D@"; "E@")
$employees :=ds.Employee.query("firstName=:1 or firstName=:2";$params) // Query on Employee table
新しいクエリ方法の利点
一つのテーブルに対して、再帰的なリンクを簡単に使用できる
Employee” テーブルに対する再帰的なリンクについて考えてみましょう。
古典的な方法の使用
このコードは、名前が文字 ‘A’ で始まるすべての従業員と、文字 ‘S’ で始まる姓を持つマネージャを要求します。
ARRAY LONGINT(_managersIDs;0)
QUERY ([Employee];[Employee]firstName;"="; "A@")
CREATE SET ([Employee]; "a")
QUERY ([Employee];[Employee]lastName;"=";
"S@")
SELECTION TO ARRAY ([Employee]ID;_managersIDs)
QUERY WITH ARRAY ([Employee]managerID;_managersIDs)
CREATE SET ([Employee]; "s")
INTERSECTION ("a"; "s"; "result")
USE SET ("result")
CLEAR SET ("a")CLEAR SET("s")
ordaの使用
このクエリはもっと軽いです…
C_OBJECT($entitySelection)
$entitySelection :=ds.Employee.query("firstName=:1 and manager.lastName=:2"; "A@"; "S@")
今すぐORDAを 使用して、より短く、よりきれいで、より読みやすいコードを作成しましょう。