Junior — Middle
Como distinguir os modos de carregamento de dados FetchType Eager e Lazy e quais são as suas principais diferenças?
sobes.tech IA
Resposta da IA
No JPA (Java Persistence API), os modos de carregamento FetchType determinam quando as entidades relacionadas são carregadas a partir do banco de dados:
-
EAGER (carregamento ansioso) — os dados relacionados são carregados imediatamente junto com a entidade principal. Isso é útil quando os dados relacionados são necessários, mas pode levar a consultas excessivas e carga adicional.
-
LAZY (carregamento preguiçoso) — os dados relacionados são carregados apenas na primeira vez que são acessados no código. Isso economiza recursos, mas pode causar um erro
LazyInitializationExceptionse a sessão já estiver fechada.
Exemplo:
@Entity
public class Order {
@OneToMany(fetch = FetchType.LAZY)
private List<Item> items;
}
Aqui, items será carregado apenas ao chamar order.getItems(), e não imediatamente ao carregar Order.