1
resposta

Que confusão foi essa explicação da SerieRepository

SerieRepository

1 resposta

Oii Jonnathy.

Entendo que a explicação sobre o SerieRepository possa ter ficado um pouco confusa. Vou tentar simplificar.

O que é o SerieRepository?

O SerieRepository é uma interface que estende o JpaRepository. Isso significa que ela herda vários métodos prontos para realizar operações básicas de CRUD (Create, Read, Update, Delete) no banco de dados.

Como implementar o SerieRepository?

  1. Criar a interface SerieRepository:
package br.com.alura.screenmatch.repository;

import br.com.alura.screenmatch.model.Serie;
import org.springframework.data.jpa.repository.JpaRepository;

public interface SerieRepository extends JpaRepository<Serie, Long> {
}
  • JpaRepository<Serie, Long>: Aqui, Serie é a entidade que estamos manipulando e Long é o tipo do ID da entidade.

Como usar o SerieRepository?

Pra usar o SerieRepository, precisamos injetá-lo em uma classe gerenciada pelo Spring. Isso é feito através da Injeção de Dependência com a anotação @Autowired.

  1. Injetar o SerieRepository na sua classe principal:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class ScreenmatchApplication implements CommandLineRunner {

    @Autowired
    private SerieRepository repositorio;

    public static void main(String[] args) {
        SpringApplication.run(ScreenmatchApplication.class, args);
    }

    @Override
    public void run(String... args) throws Exception {
        // Exemplo de uso do repositorio para salvar uma série
        Serie serie = new Serie();
        serie.setTitulo("Gilmore Girls");
        repositorio.save(serie);
        
        // Exemplo de uso do repositorio para buscar todas as séries
        List<Serie> series = repositorio.findAll();
        series.forEach(System.out::println);
    }
}

O que acontece aqui?

  • @Autowired: O Spring injeta automaticamente uma instância do SerieRepository na variável repositorio.
  • repositorio.save(serie): Salva uma nova série no banco de dados.
  • repositorio.findAll(): Recupera todas as séries do banco de dados.

Por que não podemos instanciar diretamente o SerieRepository?

O SerieRepository é uma interface, e interfaces não podem ser instanciadas diretamente. O Spring cria automaticamente uma implementação dessa interface e a injeta onde for necessário, graças à Injeção de Dependência.

Espero ter ajudado.

Um abraço e bons estudos.