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;
}