Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Repository Genérico

Boa noite.

Cada entity precisa de um repository. Pensando num projeto grande, teriamos diversos repositorys sem código algum.

Seria possível criar um Repository genérico com Generic ou algo do tipo e passar a entity quando for injetado?

Pela atenção, agradeço!

4 respostas

Oi Thiago!

Sim, infelizmente vai precisar ter um repository por entidade, por conta do mecanismo do Spring Data de criar a clase dinamicamente se baseando na entidade específica.

Daria para fazer um repository genérico apenas nos casos de entidades que utilizam herança.

Bons estudos!

Olá Rodrigo, bom dia.

Como seria esse caso de entidades com herança?

Pensando nessa solução, daria para criar uma classe genérica tbm e todas as Entitys herdariam dela?

solução!

Seria algo assim:

public interface GenericRepository<T extends GenericEntity> extends JpaRepository<T, Long> {
}

E para injetar:

@Autowired
private GenericRepository<Medico> medicoRepository;

@Autowired
private GenericRepository<Paciente> pacienteRepository;

Só não testei para ver se funciona em todas as situações.

Mas eu não vejo isso com uma boa ideia, pois nos projetos os repositories dificilmente ficarão vazios, pois sempre vai surgir a necessidade de se criar métodos que são específicos de uma entidade, sendo geralmente métodos de consultas, necessitando assim de se criar um repositoy específico, pois geralmente é complexo, ou até impossível, de se criar um método específico na interface genérica.

Olá Rodrigo, bom dia.

Agradeço atenção!