Dotazování do databáze pomocí objektově orientovaného přístupu

Automaticky přeloženo z Deepl

Poté, co jste se dozvěděli, jak můžete vytvářet, aktualizovat a odstraňovat data, je tu nový příspěvek do seriálu ORDA. V tomto příspěvku se dozvíte, jak se můžete dotazovat na datové úložiště v objektově orientovaném režimu. Díky ORDA jsou dotazy lehčí, čitelnější a můžete procházet celým datovým modelem pomocí objektově orientovaných konceptů !

Kromě toho umožňuje ORDA velmi snadno dotazovat několik souvisejících tabulek, spravovat rekurzivní vztahy k téže tabulce a používat několik logických operátorů v jednom dotazu. Navíc se nemusíte starat o nastavování vztahů mezi tabulkami … ručně ani automaticky !

Příklad dotazu s DataStore

ZAČNĚTE S DOTAZOVÁNÍM V SYSTÉMU ORDA

Stejně jako když byste prováděli dotaz na tabulku, dotazování pomocí ORDA se provádí na datovou třídu (která odpovídá tabulce).

Existuje několik způsobů, jak se dotazovat na datovou třídu. Následující příklady poskytují stručný přehled. Podrobnější informace o query() se podívejte do dokumentace.

1- Zadejte dotaz jako jeden řetězec.

Zde je dotaz pro získání všech zaměstnanců, jejichž křestní jméno začíná na „S“:

C_OBJECT($employees)
$employees :=ds.Employee.query("firstName='S@'"
) // Query on Employee table

2- Zadejte dotaz a hodnoty zvlášť pomocí zástupných znaků

Nyní řekněme, že chcete získat všechny zaměstnance, jejichž křestní jméno začíná na „D“ nebo „E“. Všimněte si, že hodnoty, které se mají použít, jsou v dotazu odsazeny a jsou označeny pomocí :1, :2, … :n, jak je uvedeno níže:

C_OBJECT($employees)
$employees :=ds.Employee.query("firstName=:1 nebo firstName=:2"; "D@"; "E@"
) // Query on Employee table

Varianta: Pro zadání hodnot můžete také použít zástupné znaky prostřednictvím kolekce. Jak ukazuje následující příklad:

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

Některé výhody nového způsobu dotazování

SNADNÉ POUŽITÍ REKURZIVNÍHO ODKAZU NA JEDNU TABULKU

Uvažujme tento rekurzivní odkaz na tabulku „Zaměstnanec“:

Při použití klasického způsobu

Tento kód požaduje všechny zaměstnance, jejichž křestní jméno začíná písmenem „A“, přičemž manažer má příjmení začínající písmenem „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")

pomocí orda

Tento dotaz je mnohem lehčí…

C_OBJECT($entitySelection)
$entitySelection := ds.Employee.query("firstName=:1 and manager.lastName=:2"; "A@"; "S@")

Nečekejte … začněte používat ORDA hned a získejte kratší, čistší a čitelnější kód!

Avatar
• Product Owner • Marie-Sophie Landrieu-Yvert se připojila k programovému týmu 4D jako Product Owner v roce 2017. Jako Product Owner má na starosti psaní uživatelských příběhů a jejich převod do funkčních specifikací. Její úlohou je také zajistit, aby implementovaná funkce odpovídala potřebám zákazníka. Marie-Sophie vystudovala inženýrskou školu ESIGELEC a svou kariéru zahájila jako inženýrka v IBM v roce 1995. Podílela se na různých projektech (projekty údržby nebo výstavby) a pracovala jako vývojářka Cobol. Poté pracovala jako UML designer a Java developer. V poslední době byly jejími hlavními rolí analyzovat a psát funkčních požadavky a koordinovat obchodní a vývojové týmy.