Sobes.tech
Middle

Qual é a diferença entre carregamento preguiçoso (lazy) e carregamento ansioso (eager)?

sobes.tech IA

Resposta da IA

O carregamento preguiçoso adia a inicialização do objeto até ao primeiro acesso a ele. O carregamento ansioso inicializa o objeto imediatamente ao carregar o objeto principal que o contém.

Diferenças:

Característica Carregamento preguiçoso Carregamento ansioso
Tempo de carregamento Na primeira utilização No carregamento do objeto principal
Carga Distribuída ao longo do tempo Única, no início
Memória Economiza memória inicialmente Pode requerer mais memória de imediato
Desempenho Melhor ao trabalhar com parte dos dados Pode ser mais rápido se todos os dados forem necessários imediatamente

Exemplo em Hibernate:

// Carregamento preguiçoso
@Entity
public class Order {
    @OneToMany(fetch = FetchType.LAZY)
    private List<Item> items;
}

// Carregamento ansioso
@Entity
public class Order {
    @OneToMany(fetch = FetchType.EAGER)
    private List<Item> items;
}