Na aula foi utilizado o getReferenceById que diferente do findById não retorna um Optional da Entidade, qual seria a vantagem de usar esse método?
Na aula foi utilizado o getReferenceById que diferente do findById não retorna um Optional da Entidade, qual seria a vantagem de usar esse método?
Oi Camila! Tudo bem?
A diferença entre findById
e getReferenceById
é um ponto interessante no uso do JPA. Vamos lá:
findById: Este método retorna um Optional
da entidade. Isso significa que ele realmente busca o objeto no banco de dados e, se não encontrar, retorna um Optional.empty()
. É útil quando você precisa ter certeza de que o objeto existe antes de prosseguir com alguma operação.
getReferenceById: Este método, por outro lado, não faz uma busca imediata no banco de dados. Ele retorna uma referência à entidade, que é um proxy. Isso significa que o objeto só será realmente carregado do banco de dados quando você acessar alguma propriedade dele. É útil em situações onde você quer evitar uma consulta desnecessária ao banco de dados, especialmente se você tem certeza de que o objeto existe e você só precisa de uma referência para, por exemplo, atualizar um campo específico.
Espero ter ajudado e bons estudos!