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 table-data-gateway.md
guest@codeandosimple: ~/enterprise/patterns $ cat table-data-gateway.md

Table Data Gateway_

// "Éxito suele venir a aquellos que están demasiado ocupados buscándolo"

El Table Data Gateway es un patrón de diseño que actúa como un intermediario entre la aplicación y una tabla de base de datos.

A diferencia del Row Data Gateway, que gestiona una fila a la vez, el Table Data Gateway ofrece métodos para realizar operaciones sobre el conjunto de la tabla… como recuperar múltiples filas, insertar una nueva fila o eliminar filas según ciertos criterios.

Este patrón encapsula las consultas SQL y las operaciones de la base de datos, proporcionando una API sencilla para que la lógica de negocio interactúe con la base de datos.

# ¿Cuándo usarlo?

Este patrón es ideal para aplicaciones que necesitan realizar operaciones en el nivel de la tabla, como buscar conjuntos de registros, actualizar múltiples filas a la vez o insertar registros sin necesidad de manipular entidades individuales.

# Ventajas

  • verified

    Simplicidad

    Ofrece una interfaz simple para interactuar con la base de datos, haciendo el código más limpio.

  • verified

    Centralización del acceso

    Concentra las operaciones de la base de datos en un único lugar.

  • verified

    Separación de responsabilidades

    Permite separar claramente la lógica de acceso a datos del resto de la aplicación.

# Desventajas

  • warning

    Menor abstracción

    Puede no ofrecer tantas características o abstracciones como un mapeador de objetos-relacional.

  • warning

    Potencial duplicación

    Si varias partes de la aplicación realizan operaciones similares, podría haber duplicación.

# Ejemplo Detallado en Java

Veamos cómo podría implementarse un Table Data Gateway para una tabla Personas en una base de datos:

PersonasGateway.java

public class PersonasGateway {
    // Conexión a la base de datos, omitida para simplificar

    public List<Persona> buscarTodas() {
        // Retorna todas las personas en la tabla
        return ejecutarConsulta("SELECT * FROM personas");
    }

    public List<Persona> buscarPorNombre(String nombre) {
        // Retorna personas que coincidan con el nombre
        return ejecutarConsulta("SELECT * FROM personas WHERE nombre = ?", nombre);
    }

    public void insertar(String nombre, String email) {
        // Inserta una nueva persona en la tabla
        ejecutarActualizar("INSERT INTO personas (nombre, email) VALUES (?, ?)", nombre, email);
    }

    public void eliminar(int id) {
        // Elimina una persona de la tabla por ID
        ejecutarActualizar("DELETE FROM personas WHERE id = ?", id);
    }

    // Métodos ejecutarConsulta y ejecutarActualizar serían implementados aquí…
}

# Conclusiones

El Table Data Gateway proporciona una forma estructurada y eficiente de gestionar el acceso a las tablas de la base de datos, facilitando operaciones comunes sin complicar el diseño de la aplicación. Frameworks como .NET hacen uso común del Table Data Gateway.