Olá pessoal.
Uma dúvida. No meu projeto utilizo jpa, por isso trabalho com EntityManager. Mas algumas vezes preciso usar Criteria, então retiro a Session usando o método getDelegate() da EntityManager.
No final da minha chamada da Action (estou usando Struts), preciso fechar minha sessão pois utilizo uma só para todas as consultas. Percebi que se fecho a EntityManager, a Session extraída continua aberta e ativa. Se fecho a Session, a EntityManager é fechada, porém se usar o método isOpen() me retorna true, mas se tento utilizá-la em alguma query, o sistema me alerta dizendo que a EntityManager está fechada. Acredito que seja um bug do framework, que só considera isOpen() = false se o método close() for usado direto na EntityManager e não na Session extraída.
Usei o Hibernate Statistics pra ver quantas sessões foram abertas e fechadas e percebi que todas são fechadas se utilizo o close() direto na Session. Se uso close() na EntityManager algumas sessões ficam abertas, pois como já disse, em alguns momentos utilizo o getDelegate().
Estou certa mesmo ou viajei total?