4D v17 představuje ORDA, zásadní evoluci ve 4D, která vývojářům 4D otevírá svět nových možností. Chcete-li se o systému ORDA a jeho výhodách dozvědět více, přečtěte si tento příspěvek a zjistěte, jak systém ORDA změní způsob vaší práce. Abychom vás provedli průzkumem ORDA, we’ve prepared série příspěvků na blogu plně věnovaná konceptům core a souvisejícím funkcím. Tento příspěvek na blogu podrobně popisuje, jak můžete provádět operace CRUD nad databází pomocí ORDA. CRUD je zkratka pro čtyři základní operace, které můžete provádět s daty: Create, Read, Updatea Delete.
ÚVOD
V ORDA se k datům přistupuje prostřednictvím abstrakční vrstvy: datového úložiště. Datové úložiště je objekt, který poskytuje rozhraní k databázi a jejím datům prostřednictvím objektů. Například tabulka je mapována na objekt datové třídy, pole je atribut datové třídy a záznamy jsou entity. Nový ds vrací odkaz na datové úložiště aplikace. Pokud se chcete dozvědět více, podívejte se na přehledový článek v dokumentaci.
Abychom vás provedli zkoumáním funkcí ORDA , připravili jsme pro vás slovníček různých pojmů a konceptů spolu s jejich definicemi.
Operace CRUD
V systému ORDA se operace Vytvořit, Aktualizovat a Odstranit neprovádějí nad aktuálním výběrem nebo aktuálním záznamem, ale nad entitami. Díky tomu můžete spravovat několik sad entit (současně) a provádět s nimi své akce.
vytvořit
Operace Vytvořit se provádí jednoduše tak, že se nová entita instancuje pomocí metody new( ) a poté se uloží příkazem save() metodou.
C_OBJECT($status;$employee)
$employee :=ds.Employee.new() // Create a new employee
$employee .lastName:="Smith" // Set the last name to "Smith"
$status :=$employee.save() // Save employee
update
Operace Update se provádí nad entitou pomocí stejné metody save() metodou.
C_OBJECT($status;$employee)
)
$employee :=ds.Employee.query("lastName=:1"; "Smith").first() // Get first employee whose name is "Smith"
If ($employee#Null)
$employee .lastName:="Mac Arthur" // Set the last name to "Mac Arthur"
$status :=$employee.save( // Save employee
End if
vymazat
Operace Delete se provádí na entitě nebo výběru entit pomocí metody drop() metodou.
C_OBJECT($status;$employee)
)
$employee :=ds.Employee.query("lastName=:1"; "Mac Arthur").first() // Get first employee whose name is "Mac Arthur"
If ($employee#Null)
$status :=$employee.drop( // Delete the employee data but the $employee entity remains in memory
End if
UZAMYKÁNÍ ENTIT
Práce s pesimistickým zamykáním je možná pomocí ORDA. Při klasickém způsobu kódování se Locked se příkaz používá ke kontrole, zda je aktuální záznam tabulky uzamčen, či nikoliv.
Pomocí ORDA musí být entita před aktualizací uzamčena. Příkaz lock() metoda vrací výsledek, který udává, zda bylo uzamčení úspěšné, nebo ne. Jakmile je entita aktualizována, je třeba ji odemknout příkazem unlock() metodou.
C_OBJECT($employee;$statusLock;$statusSave;$statusUnLock)
„).
$employee :=ds.Employee.query("lastName=:1"; "Watesfirst()
If ($employee#Null)
$statusLock :=$employee.lock() // Lock entity
If ($statusLock.success) // The entity has been successfully locked
$employee.lastName:="Mac Arthur" // Set name to "Mac Arthur"
$statusSave :=$employee.save() // Save employee
$statusUnLock :=$employee.unlock() // Unlock entity
End if
End if
Dobrou zprávou je, že ORDA umožňuje zvolit, zda chcete pracovat s optimistickým nebo pesimistickým zamykáním. Všechny podrobnosti vám poskytneme ve zvláštním příspěvku o obou režimech zamykání. Zůstaňte naladěni!