Use “lazy loading” para os relacionamentos. Assim só vai ser carregado o que fizer parte da tabela “User”, enquanto os dados referentes aos relacionamento são carregados meio que “on-demand”.
Deixa eu ver se eu entendi. Fazendo lazy=loading
Os dados dos objetos os quais o objeto User se relaciona,
somente serão carregados quando eu precisar ???
O parâmetro de lazy-loading (ou lazy-initialization, nunca me lembro direito) deve ser declarado no relacionamento cujo carregamento deve ser feito “on-demand”.
É algo mais ou menos assim:
Mas então, o problema é mais abaixo.
Se minha tabela tiver muitos relacionamentos e eu precisar alterar alguma coisa em uma das tabelas relacionadas, o desempenho irá cair.
Exemplo: suponha que o departamento tenha uma Collection e que essa Collection seja relacionada com os empregados. Suponha que o objeto Empregado tenha diversos atributos, mas eu só quero modificar o atributo salário (dar um aumento pra todos os funcionários de um dado departamento, por exemplo). Então, quando eu carregar o departamento, ele vai ter que trazer todos os usuários e então eu vou iterar na coleção e ir alterando os salários e então salvar tudo de uma vez?
Isso não vai prejudicar o desempenho?
E se eu quisesse alterar o salário de apenas alguns usuários? Ainda teria que carregar todos os usuários do departamento?