Crear, actualizar y eliminar datos con ORDA

Traducido automáticamente de Deepl

4D v17 presenta ORDAORDA, una importante evolución en 4D que abre un mundo de nuevas posibilidades para los desarrolladores de 4D. Para saber más sobre ORDA y sus beneficios, consulte este post para ver cómo ORDA cambiará su forma de trabajar. Con el fin de guiarle a través de la exploración de ORDA, we’ve prepared una serie de entradas de blog totalmente dedicadas a los conceptos de core y características relacionadas. Esta entrada del blog detallará cómo puedes realizar operaciones CRUD en tu base de datos con ORDA. CRUD es un acrónimo de las cuatro operaciones básicas que puedes realizar con los datos: Crear, Leer, Actualizary Eliminar.

INTRODUCCIÓN

Con ORDA, se accede a los datos a través de una capa de abstracción: el datastore. Un datastore es un objeto que proporciona una interfaz a la base de datos y sus datos a través de objetos. Por ejemplo, una tabla se asigna a un objeto de clase de datos, un campo es un atributo de una clase de datos y los registros son entidades. El comando new ds devuelve una referencia en el almacén de datos de la aplicación. Si quieres saber más, echa un vistazo al artículo de resumen en la documentación.

Para guiarle en la exploración de las características de ORDA , hemos preparado un glosario de los diferentes términos y conceptos, junto con su definición.

Operaciones CRUD

Con ORDA, las operaciones de Crear, Actualizar y Eliminar no se realizan sobre una selección o un registro actual, sino sobre entidades. Esto le permite manejar varios conjuntos de entidades (al mismo tiempo) para realizar sus acciones.

ORDA – Realizar operaciones CRUD

crear

La operación Create se realiza simplemente instanciando una nueva entidad con el método new() y luego guardándola con el método 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

actualizar

La operación Update se realiza sobre una entidad utilizando el mismo método 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

borrar

La operación Delete se realiza sobre una entidad o una selección de entidades utilizando el método 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

BLOQUEO DE ENTIDADES

Trabajar con bloqueo pesimista es posible con ORDA. En la forma clásica de codificación, el comando Locked se utiliza para comprobar si el registro actual de una tabla está bloqueado o no.

Con ORDA la entidad debe estar bloqueada antes de actualizarla. El método lock() devuelve un resultado que indica si el bloqueo se ha realizado con éxito o no. Una vez actualizada la entidad, debe ser desbloqueada con el método 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.lastName:="Mac Arthur" // Set name to "Mac Arthur"
$statusSave :=$employee.save() // Save employee
$statusUnLock :=$employee.unlock() // Unlock entity
End if
End if

La buena noticia es que ORDA te permite elegir si quieres trabajar con bloqueo optimista o pesimista. Te daremos todos los detalles en un post dedicado a ambos modos de bloqueo. ¡Estén atentos!

Avatar
• Propietario de producto - Marie-Sophie Landrieu-Yvert ingresó al equipo de 4D Product como Propietario de producto en 2017. Como tal, está a cargo de escribir las historias de los usuarios y luego traducirlas en especificaciones funcionales. Su papel es también asegurarse de que la implementación de la funcionalidad entregada cumpla con las necesidades del cliente. Marie-Sophie se graduó en la Escuela de Ingeniería de ESIGELEC y comenzó su carrera como ingeniera en IBM en 1995. Participó en varios proyectos (de mantenimiento y creación) y trabajó como desarrolladora de Cobol. Luego trabajó como diseñadora de UML y desarrolladora de Java. Sus principales funciones fueron analizar y redactar requisitos funcionales, coordinar los equipos de negocio y de desarrollo.