Hibernate x Lazy  XML
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Autor Mensagem
marceloplis
GUJ Ranger

Membro desde: 22/08/2005 10:08:21
Mensagens: 877
Localização: São Paulo - SP
Offline

Pessoal, alguém poderia me esclarecer no bom e velho português.... seguinte:

tenho um relacionamento @ManyToOne o que tenho q ter em mente para decidir em usar apenas @ManyToOne ou @ManyToOne(fetch=FetchType.LAZY) ??


Valew.
[Email] [MSN]
omaisnormalbaba
JavaGuru

Membro desde: 27/03/2006 18:45:11
Mensagens: 223
Localização: Passos - Mg
Offline

marceloplis wrote:Pessoal, alguém poderia me esclarecer no bom e velho português.... seguinte:

tenho um relacionamento @ManyToOne o que tenho q ter em mente para decidir em usar apenas @ManyToOne ou @ManyToOne(fetch=FetchType.LAZY) ??


Valew.


Eu acho que se tem que pensar em populacao na consulta. Porque quando você coloca o Many To One ele ja vem com FetchType.EAGER imbutido implicitamente. Ou seja quando você trazer um objeto Pai o atributo mapeado vai vir junto. E quando você colocar FetchType.LAZY você obtem o conteudo do mapeamento somente quando acessado pela primeira vez...

Se acaso eu estiver errado, favor me falem...

omaisnormalbaba!!!!!!!!!!!!
[Email] [MSN]
marceloplis
GUJ Ranger

Membro desde: 22/08/2005 10:08:21
Mensagens: 877
Localização: São Paulo - SP
Offline

Quer dizer que qdo não há necessidade de trazer os objetos mapeados, é mais vantagem usar o (fetch=FetchType.LAZY) ?? ou nada haver ??
[Email] [MSN]
rogerionj
Entusiasta Java

Membro desde: 15/04/2007 11:33:25
Mensagens: 22
Localização: Tubarao/SC
Offline

Isso mesmo, porem se voce usar uma arquitetura que tenha view x core, o lazy pode ser um pouco trabalhoso no desenvolvimento,

pois se solicitarmos na view, a utilizacao de um atributo que esteja dentro de um objeto @ManyToOne e esse objeto esteja LAZY

ocorrera provavelmente um erro do tipo

org.hibernate.LazyInitializationException: could not initialize proxy - no Session

tendo assim q fazer um tratamento diferente, trazendo tudo que precisa de uma vez pra camada view

Um outro problema de usar EAGER como padrao é se voce tem varios objetos ligados

Ex.:

Empresa tem Usuario que tem Grupo que tem Pais, que tem Estado, que tem Cidade

quando solicitar Empresa ele irá consultar toda essas ligacoes, sem a necessidade de usar

Não sei se há alguma forma de limitar o nivel de consulta do hibernate, desconheço, se alguem souber e puder postar, agradeço.
 
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Ir para:   
Powered by JForum 2.1.8 © JForum Team