terminal

codeando_simple

terminal

menu

terminal

search_module

guest@codeandosimple: ~/system/search $ grep -r "" .

Press [ENTER] to execute search

Status

Engine: Ready

Database: Online

Index: V2.1.0_LATEST

bash — cat data-mapper.md
guest@codeandosimple: ~/enterprise/patterns $ cat data-mapper.md

Data Mapper_

// "Cada logro comienza con la decisión de intentarlo"

El Data Mapper es un patrón de diseño que propone un componente intermediario para mapear los datos entre la base de datos y los objetos de negocio de la aplicación, sin que estos últimos tengan conocimiento de la base de datos.

Esto permite una separación clara entre la lógica de negocio (los objetos de dominio) y el acceso a datos, facilitando el mantenimiento y la evolución de ambos de manera independiente.

# ¿Cuándo usarlo?

Este patrón es ideal en aplicaciones donde la estructura de la base de datos y la lógica del dominio de la aplicación difieren significativamente, o cuando se desea mantener la lógica de negocio completamente desacoplada del código de acceso a datos.

Es especialmente útil en sistemas complejos, donde esta separación y abstracción facilitan la gestión de cambios tanto en el modelo de datos como en las reglas de negocio sin que uno afecte directamente al otro.

# Ventajas

  • verified

    Separación de responsabilidades

    Clara distinción entre la lógica de negocio y el acceso a datos.

  • verified

    Flexibilidad

    Facilita los cambios en la base de datos o en los objetos de negocio con mínimo impacto.

  • verified

    Reutilización y organización

    Permite reutilizar la lógica de acceso a datos y organizar mejor el código.

# Desventajas

  • warning

    Complejidad adicional

    Introduce una capa extra de abstracción, aumentando la complejidad del diseño.

  • warning

    Curva de aprendizaje

    Requiere una comprensión clara del patrón y cómo implementarlo adecuadamente.

  • warning

    Rendimiento

    El proceso de mapeo puede introducir una sobrecarga adicional en algunos casos.

# Ejemplo Detallado en Java

Un Data Mapper para Persona sería responsable de transferir datos entre instancias de Persona y la tabla personas sin que la clase Persona sepa nada sobre el almacenamiento.

PersonaMapper.java

public class PersonaMapper {
    private Database db; // Supongamos que esto es una abstracción para la gestión de la base de datos

    public PersonaMapper(Database db) {
        this.db = db;
    }

    public Persona buscarPorId(int id) {
        // Realiza una consulta a la base de datos y construye una instancia de Persona con los resultados
    }

    public void guardar(Persona persona) {
        // Verifica si la persona ya existe en la base de datos y realiza una inserción o actualización
    }

    // Otros métodos para actualizar, eliminar, etc.
}

# Conclusiones

El patrón Data Mapper facilita el desarrollo y mantenimiento de aplicaciones al separar la lógica de negocio del acceso a datos. Aunque puede ser más complejo de implementar inicialmente, esta separación ofrece flexibilidad y escalabilidad a largo plazo.