Patrón de registro activo


En la ingeniería de software , algunas personas consideran el patrón de registro activo como un patrón arquitectónico y recientemente otros lo consideran un antipatrón . [1] Se encuentra en software que almacena datos de objetos en memoria en bases de datos relacionales . Fue nombrado por Martin Fowler en su libro de 2003 Patterns of Enterprise Application Architecture . [2] [3] La interfaz de un objeto conforme a este patrón incluiría funciones como Insertar, Actualizar y Eliminar, además de propiedades que corresponden más o menos directamente a las columnas en la tabla de la base de datos subyacente.

El patrón de registro activo es un método para acceder a los datos en una base de datos . Una tabla o vista de base de datos se incluye en una clase . Por lo tanto, una instancia de objeto está vinculada a una sola fila en la tabla. Después de la creación de un objeto, se agrega una nueva fila a la tabla al guardar. Cualquier objeto cargado obtiene su información de la base de datos. Cuando se actualiza un objeto, también se actualiza la fila correspondiente en la tabla. La clase contenedora implementa métodos de acceso o propiedades para cada columna de la tabla o vista.

Este patrón es comúnmente utilizado por las herramientas de persistencia de objetos y en el mapeo relacional de objetos (ORM). Normalmente, las relaciones de clave externa se expondrán como una instancia de objeto del tipo apropiado a través de una propiedad.

Las implementaciones del concepto se pueden encontrar en varios marcos para muchos entornos de programación. Por ejemplo, si hay una tabla partsen una base de datos con columnas name(tipo de cadena) y price(tipo de número), y el patrón de registro activo está implementado en la clase Part, el pseudocódigo

creará una nueva fila en la partstabla con los valores dados, y es aproximadamente equivalente al comando SQL

Esto encontrará un nuevo Partobjeto basado en la primera fila coincidente de la partstabla cuya namecolumna tiene el valor "caja de cambios". El comando SQL utilizado puede ser similar al siguiente, según los detalles de implementación de SQL de la base de datos: