Creare, aggiornare e cancellare dati con ORDA

Tradotto automaticamente da Deepl

4D v17 introduce ORDAun’importante evoluzione di 4D che apre un mondo di nuove possibilità per gli sviluppatori di 4D. Per saperne di più su ORDA e sui suoi vantaggi, consultate questo post per scoprire come ORDA cambierà il vostro modo di lavorare. Per guidarvi nell’esplorazione di ORDA, we’ve prepared una serie di blog post completamente dedicati ai concetti di core e alle relative funzionalità. Questo blog post illustra in dettaglio come è possibile eseguire operazioni CRUD sul database con ORDA. CRUD è l’acronimo delle quattro operazioni di base che si possono eseguire sui dati: Creare, Leggere, Aggiornaree Cancellare.

INTRODUZIONE

Con ORDA, l’accesso ai dati avviene attraverso un livello di astrazione: il datastore. Un datastore è un oggetto che fornisce un’interfaccia al database e ai suoi dati attraverso gli oggetti. Ad esempio, una tabella è mappata su un oggetto dataclass, un campo è un attributo di un dataclass e i record sono entità. Il comando nuovo ds restituisce un riferimento al datastore dell’applicazione. Per saperne di più, consultate l’articolo sulla panoramica nella documentazione.

Per guidarvi nell’esplorazione delle funzionalità di ORDA , abbiamo preparato un glossario dei diversi termini e concetti, insieme alla loro definizione.

Operazioni CRUD

Con ORDA, le operazioni di creazione, aggiornamento e cancellazione non vengono eseguite su una selezione o un record corrente , ma su entità. Ciò consente di gestire diverse serie di entità (contemporaneamente) per eseguire le proprie azioni.

ORDA – Eseguire operazioni CRUD

creare

L’operazione Create viene eseguita semplicemente istanziando una nuova entità con il metodo new() e salvandola con il metodo save() e poi salvarla con il metodo

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

aggiornamento

L’operazione Update viene eseguita su un’entità con lo stesso metodo save() metodo.

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

cancellare

L’operazione Delete viene eseguita su un’entità o su una selezione di entità utilizzando il metodo drop() metodo.

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

BLOCCARE LE ENTITÀ

Con ORDA è possibile lavorare con una chiusura pessimistica. Nel modo classico di codifica, il comando Locked viene utilizzato per verificare se il record corrente di una tabella è bloccato o meno.

Con ORDA l’entità deve essere bloccata prima di aggiornarla. Il metodo lock() restituisce un risultato che indica se il blocco è riuscito o meno. Una volta aggiornata, l’entità deve essere sbloccata con il metodo unlock() metodo.

C_OBJECT($employee;$statusLock;$statusSave;$statusUnLock)
$employee :=ds.Employee.query("lastName=:1"; "Wates").first()
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

La buona notizia è che ORDA consente di scegliere se lavorare con una chiusura ottimistica o pessimistica. Vi forniremo tutti i dettagli in un post dedicato a entrambe le modalità di chiusura. Restate sintonizzati!

Avatar
- Product Owner - Marie-Sophie Landrieu-Yvert è entrata a far parte del team 4D Product come Product Owner nel 2017. In qualità di Product Owner, è incaricata di scrivere le storie degli utenti e di tradurle in specifiche funzionali. Il suo ruolo è anche quello di assicurarsi che l'implementazione della funzionalità fornita soddisfi le esigenze del cliente.Marie-Sophie si è laureata presso la scuola di ingegneria ESIGELEC e ha iniziato la sua carriera come ingegnere presso IBM nel 1995. Ha partecipato a vari progetti (di manutenzione o di costruzione) e ha lavorato come sviluppatrice Cobol. In seguito ha lavorato come progettista UML e sviluppatore Java. Ultimamente i suoi ruoli principali erano l'analisi e la scrittura dei requisiti funzionali, il coordinamento dei team di business e di sviluppo.