1
resposta

Dúvida de implementação do desafio: Posso criar um MusicaRepository para salvar músicas?

Olá,

diante da solução apresentada no curso, qual seria a diferença com a que optei fazer?

No meu caso, criei um MusicaRepository que fazia o cadastro da música

public class CadastrarMusicas implements Command {

    private MusicaRepository musicaRepository;
    private ArtistaRepository artistaRepository;

    public CadastrarMusicas(MusicaRepository musicaRepository,
                            ArtistaRepository artistaRepository){
        this.musicaRepository = musicaRepository;
        this.artistaRepository = artistaRepository;
    }
    @Override
    public void execute() {
        Scanner input = new Scanner(System.in);
        System.out.println("Entre com o nome da música: ");
        String nomeDaMusica = input.nextLine();
        System.out.println("Entre com o nome do artista: ");
        String nomeDoArtista = input.nextLine();
        Optional<Artista> artista = artistaRepository.findByNomeIgnoreCase(nomeDoArtista);

        if (artista.isPresent()){
            Musica musica = new Musica(nomeDaMusica, artista.get());
            System.out.println("Música cadastrada com sucesso.");
            musicaRepository.save(musica);
        } else {
            System.out.println("Artista não encontrado.");
        }
    }
}

e encontrava as músicas de determinado artista.

public interface MusicaRepository extends JpaRepository<Musica, Long> {
    List<Musica> findMusicaByArtista(Artista artista);
}

Vi que seria mais simples trabalhar com um repository apenas.

Mas gostaria de saber se tem alguma vantagem relacionada ao desempenho em alguma das soluções?

Parabéns pela qualidade do curso. ;)

Ate +.

1 resposta

Oi Luciano, tudo bem?

Fico feliz em saber que está aproveitando o curso e muito obrigada pelo elogio!

Quanto à sua dúvida, a diferença entre a solução apresentada no curso e a que você optou fazer é que no curso foi utilizado apenas um repositório chamado "MusicaRepository" para realizar tanto o cadastro das músicas quanto a busca por músicas de determinado artista.

No entanto, na sua solução, você criou um repositório separado chamado "CadastrarMusicas" para realizar o cadastro das músicas e utilizou o "MusicaRepository" apenas para buscar as músicas de um determinado artista.

Ambas as soluções são válidas e funcionais, mas em termos de desempenho, a solução do curso pode ser considerada mais eficiente, pois utiliza apenas um repositório para realizar todas as operações relacionadas às músicas. Dessa forma, evita-se a criação de um repositório adicional e a necessidade de instanciar e injetar dois repositórios diferentes no construtor da classe "CadastrarMusicas".

No entanto, é importante ressaltar que a diferença de desempenho entre as duas soluções pode ser insignificante, especialmente em aplicações de pequeno e médio porte. Portanto, a escolha entre as duas abordagens pode depender mais da preferência pessoal e da organização do código.

Um abraço e bons estudos.