Problemas com Swing + Spring + Hibernate

1 resposta
sigrist

Olá pessoal!

Alguém já utilizou esse trio tudo ao mesmo tempo?

Estou tendo vários problemas, mas basicamente entre o Swing e o Hibernate do que com o Spring. Vou colocar um cenario bem simples do problema.

Na minha aplicacao temos uma entidade User, que tem uma coleção de Profiles. Essa coleção, utiliza a técnica de lazy load, pois não é toda hora que eu utilizo um usuário que vou precisar dos seus profiles.

O que está acontecendo é o seguinte, o Spring (que é quem fornece a sessionFactory do Hibernate pra mim), atacha na Thread a session utilizando a técnica do ThreadLocal. Quando instancio minha entidade User em uma Thread (Thread1, por exemplo), não tem problema. Agora, quando eu clico em um botão e esse botão necessita carregar os profiles do usuário para executar alguma tarefa, eu me deparo com a Exception net.sf.hibernate.LazyInitializationException, com a mensagem: Failed to lazily initialize a collection - no session or session was closed

O porque isso acontece?

Quando eu clico no botão, o Swing lança outra thread, a AWTEventQueue-0, e nessa thread, não está anexada a Session originalmente atrelada ao usuário, está uma outra session, e quando o Hibernate tenta carregar as entidades Profiles da entidade User nessa Session, ele não consegue.

Não sei se fui bem claro, mas alguém tem alguma idéia de como resolver isso?

Obrigado
Paulo Sigrist

1 Resposta

T

Cara,

Esse problema eh de inicialização tardia. A sua classe deve esta com a coleção pronta para ser inicializada tardiamente. Sendo assim, se a sessão do hibernate já estiver fechada quando você chamar o método que retorna a coleção, o erro vai ocorrer.

Eu mesmo estou agorinha com esse problema. Estou usando o Spring para tentar resolver esse problema. O que seria algo bastante prático para mim, está atrasando o meu trabalho.

Criado 21 de junho de 2005
Ultima resposta 13 de jul. de 2005
Respostas 1
Participantes 2