Fechar Sessão Hibernate em aplicativo Desktop

Olá amigos, estou desenvolvendo um aplicativo Desktop usando Swing, Hibernate, HSQLDB e até o momento tudo ok, mas surgiu uma duvida, no momento, cada vez que preciso usar o banco estou criando a sessão e fechando em seguida, isso gera um tempo grande para abrir e fechar cada sessão, fiz alguns testes em criar uma sessão apenas estática na classe Principal e todas as suas filhas utilizam esta sessão e deu certo agora está bem rápido sem necessidade de criar e fechar varias sessões, mas minha preocupação está no fechamento desta unica sessao, pois não achei um método onde ao fechar a classe principal que é um Jframe a mesma feche a sessão.

Gostaria de ajuda de vcs de como resolver este problema, para que minha sessão seja fechada caso a aplicação seja destruída.

Obrigado@

Você não deve manter a sessão do Hibernate aberta por muito tempo, isto pode te trazer problemas após algum tempo de uso, principalmente relacionado a cache.

O correto é abrir e fechar, mas para evitar o problema de desempenho, pode utilizar um pool de conexões. Ele mantém um determinado número de conexões abertas, qdo vc precisa de uma é o pool que gerencia qual vai ser ou se tem que abrir uma nova.

Particularmente eu prefiro usar o spring e configurá-lo junto com algum pool (c3po, dbcp…). Fica bem melhor, vc não precisa ficar abrindo e fechando as conexões manualmente. Basta anotar o método com @Transactional (ou outro tipo de configuração que vc queira) e já era…

Valeu pela dica, vou ver como configurar o spring em um projeto desktop.