Hibernate - quando devo fecharr a sessão?

galera, dúvida rapida …

Estou usando hibernate na minha aplicação, e várias vezes estou tendo dor de cabeça com a sessão do hibernate … quando ele encontra um objeto do mesmo tipo, ja referencia na sessão, com o mesmo id, ele da pau … isso acontece, porque minha sessão é um singletoon e eu a mantenho aberta o tempo todo …

A duvida, quando devo fechar a sessão, depois de operações dml ? depois de um select !? depois de qualquer operação ?

abraços

Eu sempre fecho após qualquer transação. Evita problemas de sessão aberta.

O correto é fechar sempre após alguma operação(depois de um commit, rollback), pois a mesma não é “Thread Safe” e pode conter objetos sujos, a que deve ser singleton é a “session factory”.

Vc pode também dar apenas um flush() na sessão que atualiza no banco e deixa a sessão preparada para qualquer outra transação.

Pois determandas situação é desnecessario fechar e abrir uma sessão logo em seguinda.

Isso já me salvou varias vezes.

Espero ter ajudado

At+