Pergunta

Ei, eu estou desenvolvendo uma aplicação desktop usando Spring e Hibernate, e eu tenho um problema com a iniciação preguiçoso. Eu olhei na web e cada solução está relacionada com a sessão aberta no modo padrão, mas eu não posso usar esse padrão. Eu também tentou obter a sessionfactory do HibernateTemplate, mas ele retorna para mim uma sessão desconectada.

Alguém sabe outra solução?

Foi útil?

Solução

Gostaria de sugerir que você tem basicamente duas soluções:

  1. arranjos fazer para manter uma sessão Hibernate aberto quando você acessar um objeto ou coleção lazy-inicializado. Isso significa que você vai ter que marcar cuidadosamente seus limites de transação em seu código, a la a "sessão aberta no modo" padrão. Primavera torna isso possível, mas em uma aplicação desktop que não vai ser tão simples como uma aplicação web onde os limites de transação são um pouco mais óbvio.

  2. Desligue todo o lazy-inicialização para seus objetos persistiu em Hibernate.

Opção 2 poderia levar a um monte de acesso de banco de dados desnecessários, e opção de 1 significa que você tem que estudar seriamente o fluxo de trabalho e casos de uso.

Espero que ajude!

Outras dicas

Uma opção é chamar Hibernate.initialize () sobre as entidades ou coleções para forçar initialize-los. Você gostaria de fazer isso antes de voltar as costas dados para o seu ponto de vista. Eu consideraria isso com cuidado, uma vez que vai gerar uma grande quantidade de instruções SQL no banco de dados.

Você pode querer olhar em usar o "esforço" em suas consultas ou configuração HQL o modo para "ansioso" em seus mapeamentos de fetch (Eu acredito que é FetchMode.EAGER em JPA ou lazy = "false" em hbm.xml).

@Jose: Não administrar a sessão em sua própria ThreadLocal. Use SessionFactory.getCurrentSession () e configurar o Hibernate para usar o "thread" SessionContext.

Eu tive um problema muito semelhante, e como eu não era capaz de encontrar qualquer solução realmente apropriado para ele. Eu vim com a minha própria uma combinação de uma série de diferentes abordagens encontradas na web e postou-los para o meu blog.

Desculpe, que eu não colocá-lo em todos aqui, mas é muito trabalho para fazê-lo uma e outra vez em todos os fóruns que eu encontrei pessoas que tenham este ou um problema semelhante

remoto Lazy Loading com Hibernate e Spring

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top