4D v17 introduz ORDAUma grande evolução em 4D que abre um mundo de novas possibilidades para os criadores 4D. Para saber mais sobre ORDA e os seus benefícios, consulte este post para ver como ORDA vai mudar a sua forma de trabalhar. A fim de o guiar através da exploração ORDA, we’ve prepared uma série de posts de blog totalmente dedicados aos conceitos core e funcionalidades relacionadas. Este post do blog irá detalhar como pode realizar operações CRUD na sua base de dados com ORDA. CRUD é um acrónimo para as quatro operações básicas que pode realizar sobre dados: Criar, Ler, Actualizar, e Apagar.
INTRODUÇÃO
Com ORDA, os dados são acedidos através de uma camada de abstracção: a datastore. Uma datastore é um objecto que fornece uma interface para a base de dados e os seus dados através de objectos. Por exemplo, uma tabela é mapeada para um objecto de dataclass, um campo é um atributo de um dataclass, e os registos são entidades. O novo ds retorna uma referência sobre o datastore da aplicação. Se quiser saber mais, dê uma vista de olhos ao artigo de síntese na documentação.
Para o guiar na exploração das características ORDA , preparámos um glossário dos diferentes termos e conceitos, juntamente com a sua definição.
Operações CRUD
Com a ORDA, as operações Criar, Actualizar e Apagar não são realizadas numa selecção actual ou num registo actual, mas sim em entidades. Isto permite-lhe gerir vários conjuntos de entidades (ao mesmo tempo) para executar as suas acções.
ORDA – Executar operações CRUD
criar
A operação Criar é feita simplesmente instanciando uma nova entidade com o novo método () e depois guardando-a com o save() método.
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
actualização
A operação de Actualização é realizada numa entidade utilizando o mesmo save() método.
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
eliminar
A operação Eliminar é realizada numa entidade ou numa selecção de entidade utilizando o drop() método.
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
ENTIDADES DE BLOQUEIO
O trabalho com bloqueio pessimista é possível com ORDA. Na forma clássica de codificação, o Locked é utilizado para verificar se o registo actual de uma tabela está ou não bloqueado.
Com ORDA , a entidade deve ser bloqueada antes de a actualizar. O lock() devolve um resultado indicando se a fechadura foi bem sucedida ou não. Uma vez actualizada a entidade, esta deve ser desbloqueada com o unlock() método.
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.apelido:="Mac Arthur" // Set name to "Mac Arthur"
$statusSave :=$employee.save() // Save employee
$statusUnLock :=$employee.unlock() // Unlock entity
End if
End if
A boa notícia é que a ORDA deixa-o escolher se quer trabalhar com um bloqueio optimista ou pessimista. Dar-lhe-emos todos os detalhes num post dedicado sobre ambos os modos de bloqueio. Esteja atento!