Sobes.tech
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 LazyInitializationException se 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.