Galera,
Sou novo no hibernate e aqui no forum tambem.
Bom o problema é o seguinte: Estou utilizando uma arquitetura não muito convencional. Talvez não seja a melhor mas não posso muda-la agora (nem gostaria de fazer isso por vários motivos). Mas estou utilizando o hibernate para fazer a persistencia e creio que estou usando de forma errada porque estou tendo vários problemas. Mas vamos aos fatos:
Arquitetura: Consiste de uma espécie de struts para fazer a parte MVC. Digamos que a lógica das telas fica em um Action. Desse Action eu faço uma chamada remota através de uma interface para o meu DAO. Talvez aí esteja o problema, mas o que acontece é que so tenho um unico EJB no AppServer e esse é como um facade para os DAOs. Ele é responsavel por controlar as transações, tudo abaixo dele só recebe commit ou rolback após voltar nele. Até ai tudo bem, problema que estou tendo é quando dou get em uma lista Lazy la no Action. Aí eu tomo pau de LazyInitializer por causa da sessão fechada (sessões hibernate são abertas no DAO via hibernateTemplate). Achei um jeito de evitar isso dando get em tudo que preciso na tela de dentro do DAO antes de retornar a entidade. Mas acho que não deveria ser assim.
De qualquer forma, minhas entidades tambem são usadas nos JSPs. Quando eu dou get em uma lista la me ferro tambem. Acho que não deveria ser assim. Fora que uma consulta simples a um objeto gera de 1 a 20 querys iguais numa mesma operação.
Como vocês usam o hibernate com uma aplicação web usando Struts por exemplo? Eu estou achando que as entidades não devem ser devolvidas para a camada visual porque elas possuem o proxy dinamico para utilizar o Lazy. Usar eager em tudo é desaconselhavel então estou meio perdido. Os exemplos na web são simples de mais para responderem minhas duvidas. Conto com a ajuda de alguem com paciência para ler tudo isso.
valew.