オブジェクト指向のアプローチでデータベースをクエリする

Deeplからの自動翻訳

データの作成、更新、削除の方法を学んだ後、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を 使用して、より短く、よりきれいで、より読みやすいコードを作成しましょう。

Avatar
- プロダクトオーナー - Marie-Sophie Landrieu-Yvertは、2017年にプロダクトオーナーとして4Dプロダクトチームに参加しました。プロダクトオーナーとして、彼女はユーザーストーリー(ユーザーが期待する新機能とその使用法)を書き、それを具体的な機能仕様に変換する役割を担っています。また彼女の役割は、実装された機能が顧客のニーズを満たしているかどうかを確認することでもあります。彼女は1995年にESIGELEC Engineering Schoolを卒業し、IBMでエンジニアとしてのキャリアをスタートさせました。様々なプロジェクト(保守や新規のプロジェクト)に参加し、Cobolのデベロッパーとして働きました。その後、UMLデザイナーおよびJavaデベロッパーとして勤務。最近は、機能要件の分析・記述、ビジネスチームと開発チームの調整などを主に担当しています。