13.3. Repository
Coleção em memória de objetos de domínio; esconde o acesso a dados.
Resumo
- Media domínio e mapeamento com uma interface de coleção de objetos de domínio.
- Cliente passa critérios (Query Object ou métodos nomeados) e recebe objetos prontos.
- Esconde de onde vêm os dados: banco, memória, serviço. Troca de estratégia sem tocar no domínio.
- Facilita testes: repositório em memória substitui o banco.
- Útil com muitos tipos de domínio ou muitas consultas. Termo central também em DDD (Evans).
Perguntas-chave
responda de cabeça, depois abraComo o domínio enxerga o Repository?
Como uma coleção em memória de objetos: adicionar, remover e buscar por critérios.
Como ele ajuda nos testes?
Uma implementação em memória substitui o banco sem mudar o domínio.
Repository é o mesmo que Data Mapper?
Não. Repository fica acima da camada de mapeamento e oferece uma interface orientada a coleção.
Exercícios de fixação
0/5 respondidas1.
clientes.buscarInadimplentes() devolve objetos Cliente; o domínio não sabe se veio do Postgres ou de uma lista em memória. Qual padrão?2.
Como o Repository facilita testes unitários do domínio?
3.
Qual a posição do Repository em relação ao Data Mapper?
4.
Qual o formato típico de uma consulta a um Repository?
5.
Quando o Repository mais compensa?