Problemas com Lazy

Olá pessoal, estou com um problema relacionado ao Lazy.
Minha aplicação está dividida em camadas. Obtenho os objetos de classes DAO, as quais abrem e fecham sessoes para realizar suas tarefas.
O problema é que preciso exibir dados, que, devido ao Lazy, não são carregados de imediato, em várias telas do sistema. Pesquisei bastante, até que encontrei a solução de se utilizar session.update( obj_pojo ) para associar um objeto a uma outra session, e assim posso acessar as propriedades que não haviam sido carregadas. O problema é que tenho vários componentes na interface gráfica e, dependendo da interação do usuário com ela, alguns dados são exibidos na tela, mas acaba ocorrendo a Exception de tentar associar um objeto a duas sessions distintas.

Toda vez que abro uma session, eu também a fecho. Aparentemente o problema ocorre quando algum componente gráfico é atualizado enquanto outro procedimento é executado, assim mais de um session.update é chamado para um mesmo objeto, utilizando sessions diferentes, daí a exception.

Então, como faço para resolver o problema? A solução trivial é utilizar uma única session para a aplicação toda (através do uso de uma classe abstract), porém não estou encorajado a fazer isso (gambiarra).

O que é que eu faço?
Existe alguma forma de recuperar os dados de um objeto sem vinculá-lo a uma outra session?

Fiz mais algumas buscas e resolvi realizar algumas operações fazendo Hibernate.isInitialized() e Hibernate.initialize(). Agora, qual método de qual classe posso usar para saber se um objeto faz parte de uma session, algo como Hibernate.isAttached(obj)?