Considere que eu tenha um obejto A que tenha como propriedade um objeto B que tenha como propriedade um objeto C e que esse tenhas como propriedades os objetos D e E. No momento em que eu preencha os valores do objeto A e esses valores vem do banco de dados, eu tenho que carregar também os valores dos outros objetos (B, C, D e E)?
Ajudaria saber se você está usando (ou considerando) alguma ferramenta de mapeamento objeto-relacional como o Hibernate ou o Toplink.
Existem basicamente duas abordagens para este tipo de problema: carregar todo o grafo de objetos (ou seja, trazer a o objeto raiz e todas as referências que ele tem, recursivamente) ou fazer lazy loading. Com lazy loading, você traz o objeto do banco sem preencher as referências, mas quando alguém tenta usar uma delas (A.getB() por exemplo) o seu objeto carrega os dados do banco. É claro que se pode fazer diversas combinações dessas estratégias; uma comum é trazer do banco as referências diretas e fazer lazy loading das coleções.
Se você estiver usando JDBC diretamente, precisará codificar estes acessos todos, tipo:
public class A {
private B b;
public B getB() {
if (null == b)
b = getDao().getBforA(this);
return b;
}
}
Se estiver usando um framework de persistência, basta configurar os mapeamentos da maneira desejada.
AllMighty, obrigado pela participação.
Bom, na verdade não estou usando nenhuma ferramenta para persistência. A principio também não será utilizado.
Sei que esse é um forum de Java, mas isso será aplicado em C#. E que tenho feito algumas pesquisaas e esse forum é muito bom. Tentar conversar sobre OO em forum de Delphi ou C# é um tormento.
Você poderia me indicar onde posso pesquisar sobre lazy loading?
http://www.amazon.com/Patterns-Enterprise-Application-Architecture-Fowler/dp/0321127420
Recomendo muito este livro (não preciso dizer que os padrões são language agnostic).
Agora não me recordo de nenhum material específico na web.