RESTTemplate

Home

\(\color{lightgreen}\mathbb{Repository}\)


O padrão Repository é uma abordagem importante no desenvolvimento de aplicações ASP.NET. Ele se origina do Domain-Driven Design (DDD) e propõe a criação de objetos chamados Repositories, que gerenciam coleções de dados persistidos. A principal característica dos Repositories é que eles são agnósticos à tecnologia utilizada, ou seja, não estão vinculados a um banco de dados específico, cache de memória ou qualquer outra fonte de dados.

Aqui estão alguns pontos essenciais sobre o padrão Repository:

  1. Separação de Responsabilidades: O padrão Repository ajuda a separar a responsabilidade de acesso a dados das outras camadas da aplicação. Isso melhora a organização do código e facilita a manutenção.

  2. Menor Acoplamento: Ao utilizar o padrão Repository, o acoplamento entre as camadas da aplicação é reduzido. Isso significa que as mudanças no acesso a dados não afetam diretamente outras partes do sistema.

  3. Testabilidade Aprimorada: O uso de interfaces com o padrão Repository permite a criação de testes unitários mais eficientes. Isso ocorre porque podemos criar implementações de teste para os Repositories sem depender de um banco de dados real.

Criando uma Interface Repository

vamos criar um Repository em nosso projeto, onde vamos criar um diretório novo com o nome Repository e criar a interface para o nosso objeto Person.

Com o botão direito no novo diretório Repository clicamos em Add e depois Class….

Definimos agora uma nova classe do tipo Interface onde o nome de qualquer interface começa com i, no nosso exemplo o nome da interface vai ser IPersonRepository.

Agora vamos construir o modelo dos métodos que iremos utilizar para acessar o banco de dados, onde esses modelos são somente a estrutura base, as intruções que vão ser feitas se encontram nas implementações que faremos depois.

Os métodos são:

// Create serve para criar novos objetos no banco
Person Create(Person person);

// FindbyId serve para buscar um dado pelo seu ID
Person FindbyId(long id);

// FindAll serve para trazer todos os dados salvos em banco
List<Person> FindAll();

// Update serve para atualizar um dado no banco de dados
Person Update(Person person);

// Delete serve para remover um dado do banco de dados
void Delete(long id);

// Exists é um método auxiliar para ver se já existe um objeto no banco pelo ID
bool Exists(long id);

Nossa interface deve estar com o seguinte código:

using RESTTemplate.Model;

namespace RESTTemplate.Repository
{
    public interface IPersonRepository
    {
        Person Create(Person person);
        Person FindbyID(long id);
        List<Person> FindAll();
        Person Update(Person person);
        void Delete(long id);
        bool Exists(long id);
    }
}

Toda interface tem a seguinte estrutura:

namespace RESTTemplate.Repository
{
    public interface IPersonRepository
    {
    }
}

$\color{yellow}{\sf namespace}$ = namespace serve para organizar um conjunto de classes pelo seu folder definido, no nosso exemplo acima a nossa classe IPersonService faz parte do folder Services da API RESTTemplate.

$\color{yellow}{\sf public}$ = public significa que nossa classe pode ser lidar e utilizada por todo o projeto, sem ser restrito a alguma lugar.

$\color{yellow}{\sf interface}$ = interface mostra que o nosso arquivo é uma interface do C# que podemos escrever os métodos que iremos usar em Controllers.