Criar, actualizar e apagar dados com ORDA

Tradução automática de Deepl

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!

Avatar
• Proprietário do produto - Marie-Sophie Landrieu -Yvert entrou ao time 4D Product como Proprietária do Produto em 2017. Como tal, está a cargo de escrever as histórias dos usuários e depois traduzi-las em especificações funcionais. Seu papel também é garantir que a implementação da funcionalidade entregue cumpra com as necessidades do cliente. Marie-sophie se formou na Escola de Engenharia de ESIGELEC e começou sua carreira como engenheira da IBM em 1995. Participou em vários projetos (de manutenção e criação) e trabalhou como desenvolvedora de Cobol. Depois trabalhou como designer de UML e desenvolvedora de Java. Suas principais funções foram analisar e redigir requisitos funcionais, coordenar os times de negócio e de desenvolvimento.