1
resposta

[Sugestão] Aplicação Real

Olá Vinícius, tudo bem?

Estou criando uma aplicação real e gostaria de saber quanto aos métodos de manipulação cruciais(CRUD). Seria uma boa prática criar uma classe somente com estes métodos e depois chamar os metodos no meus repositórios? Por exemplo, eu tenho até agora 3 entidades no meu código, e cada entidade conta com um repositório, e os 3 têm em comum os métodos de manipulação CRUD ademais os métodos específicos de cada classe. Estou meio que copiando e colando estes métodos só trocando nome da tabela e alguns parâmetros. O que acha que posso fazer para melhorar meu código e o deixá-lo mais performático?

1 resposta

Oi Celso, tudo bem?

Quando estamos lidando com operações CRUD em várias entidades, é comum termos métodos repetitivos nos repositórios. Uma boa prática para evitar essa repetição de código é criar uma classe separada com os métodos de manipulação CRUD e depois chamá-los nos repositórios.

Essa classe pode ser chamada de "BaseRepository" ou algo semelhante. Nela, você pode implementar os métodos de criação, leitura, atualização e exclusão, que serão compartilhados por todas as entidades. Assim, você evita a duplicação de código nos repositórios individuais.

Além disso, você pode adicionar métodos específicos em cada repositório para as operações exclusivas de cada entidade. Dessa forma, você mantém a flexibilidade de ter métodos personalizados quando necessário.

Por exemplo, suponha que você tenha uma classe "Produto" e uma classe "Cliente", ambas com seus respectivos repositórios. Você pode criar a classe "BaseRepository" com os métodos CRUD genéricos e, em seguida, implementar os métodos específicos de cada entidade nos seus repositórios individuais.

public class BaseRepository {
   public void criar(Object objeto) {
      // Implementação genérica de criação
   }

   public Object ler(int id) {
      // Implementação genérica de leitura
   }

   public void atualizar(Object objeto) {
      // Implementação genérica de atualização
   }

   public void excluir(int id) {
      // Implementação genérica de exclusão
   }
}

public class ProdutoRepository extends BaseRepository {
   public void metodoEspecificoProduto() {
      // Implementação específica para Produto
   }
}

public class ClienteRepository extends BaseRepository {
   public void metodoEspecificoCliente() {
      // Implementação específica para Cliente
   }
}

Dessa forma, você centraliza a lógica de manipulação CRUD em uma única classe e mantém a organização do código. Além disso, caso seja necessário fazer alterações nos métodos CRUD, você só precisará fazer em um único lugar.

Um abraço e bons estudos.