lauronolasco:
Nessa questão do desperdício de recurso eu fico em dúvida…
Vou dar um exemplo rápido:
Supondo que eu tenha um webservice com um considerável volume de acessos.
Por exemplo, supondo que 1000 usuários estejam acessando ao mesmo tempo.
O método do webservice instancia um objeto Usuário sem a necessidade de utilizar os atributos de endereço.
Supondo também que cada atributo tenha um tamanho de 10bytes.
Se eu uso a solução 2 e mapeio UsuarioEndereço como LAZY teremos:
1 Usuário = 20 bytes
1000 usuários = 20kb
Agora utilizando a solução 1:
1 Usuário = 140 bytes
1000 usuários = 140kb
Acredito que o meu exemplo tem lógica…
O que acham??
Entao cara voce tem que pensar diferente… o que vai sobrecarregar seu banco é um exemplo do tipo
select [b]*[/b] (leia-se todas colunas da tabela)
Essa estrela que ja vem por padrão do hibernate nem sei se é ele que voce usa mesmo para mapear que pesa no banco
pq o select sempre faz de tudo.
Faça o filtro das colunas especificas que voce vai usar nesse caso pra nem carregar de banco o que voce nao vai precisar e nem utilizar recurso java pra popular suas instancias…que seja as 1000 ao mesmo tempo…
Cara 2 regrinhas basicas o que ponderar…
No java custo de processamente é bastante na palavra chave new essa palavrinha é uma das que mais consomem recurso…
Em banco de dados é seu select quanto menas coisa pedir menor trabalho ele tem pra te trazer…
É como voce falar pra alguem
solução 1 - "entao pra chegar la é so seguir reto"
solução 2 - “entao pra voce chegar la segue aqui pelo direita porque voce vai precisar dar carona pra um pessoal”
Cara se um usuario tem mais de 1 endereco sua relacao vai ter que ser 1-N sua outra solução nao vai te atender…ate atende mais dai voce estaria modelando incorretamente e fazendo não normalizado gerando duplicidade de registro eu iria alem e te proporia o seguinte modelo.
Usuario
|--------ID
|--------NOME
Usuario_Localizacao
|-------ID_USUARIO
|-------ID_LOCALIZACAO
Localizacao
|---------ID
|---------RUA
|---------NÚMERO
|---------BAIRRO
Com esse modelo voce reaproveitaria a tabela localizacao pra outros fins que eu exempliquei se amanha aparece outra classe que envolva localizacao voce ja teria meio caminho andado…