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

Repository_

// "Abstrayendo el acceso a datos como si fuera una colección"

El patrón **Repository** actúa como un mediador entre las capas de dominio y de mapeo de datos. Proporciona una interfaz que se comporta como una colección de objetos en memoria.

Su objetivo es ocultar los detalles de la infraestructura de persistencia (SQL, NoSQL, APIs externas) y permitir que la lógica de negocio trabaje con objetos de dominio simples.

# Diferencia con DAO

Mientras que un **DAO** (Data Access Object) suele ser una abstracción directa sobre una tabla de la base de datos, un **Repository** es una abstracción de más alto nivel orientada al dominio. Puede utilizar varios DAOs internamente para reconstruir un objeto complejo (Agregado).

# Implementación Común

public interface CustomerRepository {
    void add(Customer customer);
    void remove(Customer customer);
    Customer findById(String id);
    List<Customer> findByStatus(Status status);
}