[Hibernate] Lazy Loading e relacionamentos * para muitos  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
carneiro
JavaEvangelist
[Avatar]

Membro desde: 07/04/2005 11:37:42
Mensagens: 328
Offline

Olá pessoal,

Em que situações pode haver vantagens em usar lazy loading em relacionamentos 1 para muitos ou muitos para muitos, no Hibernate?

Porque eu irei fazer várias consultas ao banco, uma para cada item da coleção do relacionamento, que eu estiver percorrendo, não?

Valeu!

Davi Luan Carneiro
Desenvolvedor JEE
[Email] [MSN]
Filipe Sabella
GUJ Expert

Membro desde: 12/03/2003 11:25:57
Mensagens: 4680
Offline

Por isso que, quando sabe que usará os objetos do relacionamento lazy em determinado ponto do sistema, deves fazer a query da seguinte forma:


O método setFetchMode também é encontrado na interface Query.

Former LIPE.
[ICQ]
carneiro
JavaEvangelist
[Avatar]

Membro desde: 07/04/2005 11:37:42
Mensagens: 328
Offline

LIPE,

Correto. Então, me corrija se eu estiver errado: Lazy Loading, na prática, se torna INÚTIL em relacionamentos que não sejam de cardinalidade 1 ?

Davi Luan Carneiro
Desenvolvedor JEE
[Email] [MSN]
Abdon
JavaEvangelist
[Avatar]

Membro desde: 02/09/2003 15:50:05
Mensagens: 363
Localização: São Paulo
Offline

O lazy loading não existe para relacionamentos de cardinalidade 1-1, estes ja vem preenchidos automaticamente.


Em que situações pode haver vantagens em usar lazy loading em relacionamentos 1 para muitos ou muitos para muitos, no Hibernate?


A principal vantagem é so fazer uma pesquisa e se vc precisar desdes atributos, a pesquisa deles ficaram por responsabilidade do hibernate não sua.



ou apenas

What I like about you?
[Email] [MSN] [ICQ]
Filipe Sabella
GUJ Expert

Membro desde: 12/03/2003 11:25:57
Mensagens: 4680
Offline

Não entendo sua dúvida nem sua afirmação cara.

É bem simples: lazy loading serve para não carregar o que não quero carregar! Qual a dificuldade? o.o

Former LIPE.
[ICQ]
carneiro
JavaEvangelist
[Avatar]

Membro desde: 07/04/2005 11:37:42
Mensagens: 328
Offline



Aí é que está a minha dúvida. Quando eu dou um pessoa.getFilhos(), ele carrega todos os filhos, ou ele só vai carregá-los quando eu percorrer a coleção de filhos, carregando UM POR UM?


Davi Luan Carneiro
Desenvolvedor JEE
[Email] [MSN]
Filipe Sabella
GUJ Expert

Membro desde: 12/03/2003 11:25:57
Mensagens: 4680
Offline

Ah, entendi sua dúvida.

Basta ver o sql gerado para esta situação:


Ou seja: não, não carrega um a um.

Former LIPE.
[ICQ]
thiago_santos
Thread.start()
[Avatar]

Membro desde: 28/12/2006 11:02:18
Mensagens: 41
Offline

Olá Pessoal... Estou com um problemão no relacionamento 1xN. O sistema que eu estou fazendo tem o entity principal Agent e o entity ContactAgent. O Agent tem uma lista de ContactAgent, no entity do ContactAgent eu quero que apareça o campo AGENTUID(chave primária do entity Agent). Então no sistema quando eu vou salvar o Agent com seus ContactAgent`s ele salva quase tudo certo. No banco os registros são salvos só que o campo AGENTUID na tabela ContactAgent fica nulo. E eu não acho a solução, encontrei bem poucas pessoas com esse problema. Eu uso como banco de dados, o MySql. Vejam os códigos abaixo:

Agent, parte do código onde tem os relacionamentos...


ContactAgent, parte do código onde tem os relacionamentos...


Classe que persist os registros...


Alguém aí já passou por isso?
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team