(fetch = FetchType.LAZY)
para que serve?
(fetch = FetchType.LAZY)
para que serve?
Olá Francisco!
A anotação (fetch = FetchType.LAZY)
é usada em JPA (Java Persistence API) para definir como as associações entre entidades devem ser carregadas do banco de dados. Quando você usa FetchType.LAZY
, está dizendo ao JPA para carregar a entidade associada somente quando ela for realmente acessada no código, em vez de carregar imediatamente junto com a entidade principal.
Por exemplo, imagine que você tem uma entidade Consulta
que está relacionada a um Medico
e a um Paciente
:
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "medico_id")
private Medico medico;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "paciente_id")
private Paciente paciente;
Com FetchType.LAZY
, os dados do Medico
e do Paciente
só serão carregados do banco de dados quando você acessá-los explicitamente no seu código, como consulta.getMedico()
. Isso pode ser útil para melhorar o desempenho, especialmente se você não precisar dessas informações imediatamente.
Por outro lado, o FetchType.EAGER
carrega as entidades associadas junto com a entidade principal, o que pode ser útil se você sempre precisar dos dados associados.
Isso é um detalhe da JPA e não do Spring, sendo que você pode aprender mais neste curso
Espero ter ajudado e bons estudos!