Correção do LazyLoad no BlazeDS

6 respostas
AUser

Olá pessoal,

Postei um tópico no meu blog com o Hibernate modificado. Assim, não tendo mais problemas com o Lazy. Pelo que testei, funcionou redondo!

http://javaflex.wordpress.com

Façam bom uso! Obrigado!

6 Respostas

Andre_Brito

Boa… Muito bem escrito :slight_smile:

Pelo que eu entendi o problema tem um ‘centro’: a LazyInitiationException, certo? Se for, o nome do padrão pra resolver isso é o Open Session in View (se não me falha a memória). No site do Hibernate, eles colocam a solução, mas achei de certa forma complexa. O Paulo Silveira já escreveu no blog da Caelum sobre esse problema.

De qualquer forma, 10 pra você :stuck_out_tongue: Tá contribuindo muito com a comunidade de Flex do país.

Abraço!

AUser

Opa André,

Nesse caso, implementar a Open Session In View usando o BlazeDS me cheira arriscado, pois o risco de deadlock em produção seria alto. Usando o Blaze.

A grande questão é o tipo de retorno do Hibernate em objetos lazy. Ele retorna o tipo que herda de AbstractPersistentCollection, então o BlazeDS volta ao Hibernate e pergunta quem é aquele objeto, como não tem sessão aberta, estoura a exceção.

A grande questão é que todas as formas de solução que vi (dpHibernate, etc) não são legais. Você tem que fazer certas coisas que bem, não são boas mesmo pro projeto.

Ja essa é bem mais fácil, só substituir o JAR do Hibernate. Lá embaixo tem o link tanto com o source uqanto com o JAR. Agora um problema que notei e vou pesquisar mais tarde se tem a ver a minha solução é usa-la juntamente com o Hibernate-Annotations. Um usuário me reportou uma exceção, não sei se tem a ver (aparentemente não), mas vou verificar. Mas usando mapping com hbm normal, etc, não gerou nenhum erro.

[]'s e obrigado!

H

Opa AUser, blz?

Não sei se entendi bem, mais você mudou as classes do Hibernate para quando um relacionamento for lazy voltar nulo?

[]s,

AUser

Exato. Quando o lazy == true, ele retorna Null no atributo.

Bom, eu não vi nada de errado nisso ainda, rs. Você consegue enxergar algo negativo aí?

E bem, funcionou usando também o HibernateAnnotations. No entanto foi preciso compilar ele na versão 3.5.0. Já que não existe pré-compilado no site do Hibernate.

Se alguém quiser usar uma versão mais antiga que a 3.5.0 é só baixar o código e modificar as classes que listei no blog, vai dar o mesmo resultado.
[]'s

H

Olá,

Eu tenho uma solução para esse problema de lazy é só utilizar esse componente http://sourceforge.net/projects/setlazynull/
Ele irá fazer isso automatico setando null aonde estiver com lazy nas suas classes.

kweles

Olá Humberto!

Fiquei muito interessado neste componente, pois estou com o problema do lazy loading e precisei criar uma servlet devolvendo xml e etcc…

Baixei o componente, contudo não encontrei nenhuma documentação ou exemplo de como utilizar, vc poderia indicar algum site que explica ou
como faço para utilizaá-lo?

Obrigado!

Criado 24 de novembro de 2009
Ultima resposta 1 de dez. de 2010
Respostas 6
Participantes 5