11.3. Lazy Load
Carrega só quando alguém precisa do dado.
Resumo
- Objeto não contém todos os dados, mas sabe como buscá-los quando forem acessados.
- Quatro formas: inicialização preguiçosa (campo nulo), proxy virtual, value holder e ghost.
- Evita carregar grafos enormes de objetos que talvez nunca sejam usados.
- Risco: ripple loading (N+1): um laço dispara uma consulta por item. Carregue em lote quando souber.
- Proxy virtual pode quebrar identidade (proxy ≠ objeto real). Use só onde ajuda o desempenho.
Perguntas-chave
responda de cabeça, depois abraQuais as quatro variações de Lazy Load?
Lazy initialization, virtual proxy, value holder e ghost.
O que é ripple loading?
Muitas consultas pequenas disparadas em cascata, uma por objeto, ao percorrer uma coleção preguiçosa.
O que é um ghost?
O objeto real criado só com o id; o restante é carregado no primeiro acesso a qualquer campo.
Exercícios de fixação
0/5 respondidas1.
Um laço percorre 500 clientes e acessa
cliente.getPedidos(). O log mostra 501 consultas. Qual problema?2.
Em qual variação de Lazy Load o objeto real existe só com o id e se completa no primeiro acesso a qualquer campo?
3.
Qual problema típico do virtual proxy?
4.
Qual o principal benefício do Lazy Load?
5.
Na inicialização preguiçosa (lazy initialization), como o getter sabe que precisa buscar o dado?