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.