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

Dúvida sobre repository e DAO

No caso do DAO para cada controller é necessários criar um, certo. No repository, o professor meio que deu a entender que seria uma algo mais genérico, que seria criado um repository para todos os controllers. Porém, foi nomeada a interface "TopicoRepository" e dentro dela foi passada o nome da classe em específico e o tipo do ID dela em específico. Depois de toda essa enrolação xD, o que eu entendi é que para cada controller, será necessário um repository? Teria como fazer um repository para vários controllers??

2 respostas
solução!

Oi Alexandre,

Na verdade não é um repository para cada Controller, mas sim para cada Entidade JPA, pois os repository estão relacionados com a camada de persistência da aplicação.

A motivação do repository era para não ter que digitar todo o código de implementação, utilizando o EntityManager da JPA, em todas as classes DAO, visto que o Spring Data JPA já abstrai esse código de implementação para você.

Até daria para criar um único Repository genérico para o projeto:

public interface ForumRepository<T, ID> extends JpaRepository<T, ID> {
}

Onde T seria a classe Entidade e ID a classe do ID.

Para injetar em algum controller:

@RestController
@RequestMapping("/api/topicos")
public class TopicoRepository {

    @Autowired
    private ForumRepository<Topico, Long> topicoRepository;

    @Autowired
    private ForumRepository<Categoria, Long> categoriaRepository;
}

Mas o repository generico teria apenas os métodos que são comuns para todos os repositories: save, delete, findById, findAll, etc.

Mas na prática, em um projeto real, você acabaria precisando criar os repositories específicos, pois vai acabar precisando de consultas que não são genéricas, ou seja, que são específicas de um determinado repository.

Bons estudos!

Ah sim, muito obrigado. Resposta muito completo 8D

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software