Repository Pattern: Explorando as Raízes e a História do Padrão que Redefiniu o Acesso a Dados

No final dos anos 1990, com a explosão de grandes aplicações corporativas em Java e .NET, tornou-se cada vez mais insustentável misturar lógica de negócio com SQL espalhado pela base de código. Padrões clássicos de Data Access Object (DAO) e Data Mapper já permitiam alguma separação, mas careciam de uma visão unificadora que tratasse o repositório de objetos como uma “coleção em memória”, escondendo por completo detalhes de persistência e queries complexas.

Em novembro de 2002, Martin Fowler formalizou essa visão em Patterns of Enterprise Application Architecture. Ele definiu o Repository como um intermediário entre a camada de domínio e o mapeamento de dados, que emula uma coleção de objetos e centraliza operações de CRUD e consultas declarativas através do uso de specifications ou expressões de filtro. No exemplo a seguir, uma versão simplificada do Generic Repository em .NET usando Entity Framework Core:

Conteúdo do artigo
Repository Generic Exemple

Menos de um ano depois, em agosto de 2003, Eric Evans popularizou o padrão dentro do contexto de Domain-Driven Design. Em seu livro Domain-Driven Design: Tackling Complexity in the Heart of Software, ele recomenda definir interfaces de repositório no próprio modelo de domínio, garantindo que toda lógica de recuperação e armazenamento de aggregates passe por pontos bem definidos. A implementação concreta fica na camada de infraestrutura, favorecendo testes unitários do domínio com mocks ou repositórios em memória:

Conteúdo do artigo
Eric Evans Exemplo

Ao longo dos anos, o padrão evoluiu na prática dos frameworks. No ecossistema Java, o Spring Data JPA gera implementações de repositórios a partir de interfaces como CrudRepository<T, ID>, extraindo queries diretamente do nome dos métodos ou de anotações JPA. No .NET, surgiram abordagens genéricas de Generic Repository e Specification Pattern, muitas vezes combinadas com Dependency Injection para desacoplar ainda mais o acesso a dados.

Mais recentemente, em cenários de microsserviços, percebeu-se que repositórios monolíticos podem se tornar gargalos. Assim, adotou-se o CQRS, separando repositórios de escrita (que usam transações consistentes) de repositórios de leitura (otimizados para consultas rápidas), e o Event Sourcing, onde o repositório armazena eventos ao invés de estados. Em arquiteturas serverless e NoSQL, o pattern se adapta: repositórios deixam de ser coleções em memória tradicionais e passam a encapsular chamadas a APIs externas, caches distribuídos e até fluxos de eventos em Kafka.

Conteúdo do artigo

Em suma, do esboço inicial de DAO e Data Mapper, passando pela formalização de Fowler e a incorporação de Evans no DDD, até as adaptações para frameworks modernos, o Repository Pattern cresceu de uma simples abstração de acesso a dados para um pilar flexível na construção de sistemas escaláveis, testáveis e alinhados aos domínios de negócio.

Referências

  • Martin Fowler. Patterns of Enterprise Application Architecture (November 2002)
  • Eric Evans. Domain-Driven Design: Tackling Complexity in the Heart of Software (August 2003)
  • Exemplo de Repository + Unit of Work em Patterns of EAA (Java/C#)
  • Spring Data JPA — CrudRepository e derivação de queries por nomes de método
  • Evolução para CQRS e Event Sourcing em microsserviços

Compartilhe este insight:

Comentários

Participe deixando seu comentário sobre este artigo a seguir:

Subscribe
Notify of
guest
0 Comentários
Oldest
Newest Most Voted
Inline Feedbacks
View all comments

AUTOR

Rafael Silva
Arquiteto de software especialista em qualidade de código, domain driven design e arquitetura de software corporativo.

Arquitetura Corporativa

Ajudamos empresas a estruturar e fortalecer sua capacidade interna em Arquitetura Corporativa, promovendo alinhamento estratégico entre TI e Negócios, eficiência operacional e sustentação da transformação digital.

INSIGHTS EXIMIACO

Arquitetura de Software

Evolução e modernização de aplicações para suportar mudanças de escala.

NOVOS HORIZONTES PARA O SEU NEGÓCIO

Nosso time está preparado para superar junto com você grandes desafios tecnológicos. Entre em contato e vamos juntos utilizar a tecnologia do jeito certo para gerar mais resultados.

O seu cadastro foi realizado com sucesso!

Em breve enviaremos a apresentação desta palestra para o seu e-mail.

Seu contato foi enviado com sucesso!

Em breve retornaremos seu contato com mais informações sobre como realizar a sua inscrição na capacitação C# do Jeito Certo. Aproveite para conferir o programa completo da capacitação:

A sua inscrição foi realizada com sucesso!

O link de acesso à live foi enviado para o seu e-mail. Nos vemos no dia da live.

Muito obrigado!

Deu tudo certo com seu envio!
Logo entraremos em contato

Repository Pattern: Explorando as Raízes e a História do Padrão que Redefiniu o Acesso a Dados

Para se candidatar nesta turma aberta, preencha o formulário a seguir:

Repository Pattern: Explorando as Raízes e a História do Padrão que Redefiniu o Acesso a Dados

Para se candidatar nesta turma aberta, preencha o formulário a seguir:

Condição especial de pré-venda: R$ 14.000,00 - contratando a mentoria até até 31/01/2023 e R$ 15.000,00 - contratando a mentoria a partir de 01/02/2023, em até 12x com taxas.

Tenho interesse nessa capacitação

Para solicitar mais informações sobre essa capacitação para a sua empresa, preencha o formulário a seguir:

Tenho interesse em conversar

Se você está querendo gerar resultados através da tecnologia, preencha este formulário que um de nossos consultores entrará em contato com você:

O seu insight foi excluído com sucesso!

O seu insight foi excluído e não está mais disponível.

O seu insight foi salvo com sucesso!

Ele está na fila de espera, aguardando ser revisado para ter sua publicação programada.

Tenho interesse em conversar

Se você está querendo gerar resultados através da tecnologia, preencha este formulário que um de nossos consultores entrará em contato com você:

Tenho interesse nessa solução

Se você está procurando este tipo de solução para o seu negócio, preencha este formulário que um de nossos consultores entrará em contato com você:

Tenho interesse neste serviço

Se você está procurando este tipo de solução para o seu negócio, preencha este formulário que um de nossos consultores entrará em contato com você:

0
Queremos saber a sua opinião, deixe seu comentáriox