Amigos,
Estou apanhando muito com isso! 
Não consigo de maneira alguma fechar a session do hibernate, com isso, a aplicacao fica em execucao… A JVM nao para o processo.
Estou fazendo assim:
sessionFactory.getCurrentSession().close();
Abaixo configuracao do hibernate
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- Settings for a local Derby database. -->
<property name="dialect">org.hibernate.dialect.FirebirdDialect</property>
<property name="query.substitutions">true 1, false 0</property>
<property name="connection.driver_class">org.firebirdsql.jdbc.FBDriver</property>
<property name="connection.url">jdbc:firebirdsql:embedded:c:/database/pdv.fdb?lc_type=ISO8859_1</property>
<property name="connection.lc_ctype">ISO8859_1</property>
<property name="connection.username">SYSDBA</property>
<property name="connection.password">masterkey</property>
<property name="hibernate.connection.lc_ctype">ISO8859_1</property>
<property name="hibernate.jdbc.batch_size">20</property>
<property name="hibernate.connection.isolation">2</property>
<property name="hibernate.current_session_context_class">org.hibernate.context.ThreadLocalSessionContext</property>
<property name="show_sql">false</property>
<property name="format_sql">false</property>
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
<!-- Drop and re-create the database schema on startup -->
<property name="hbm2ddl.auto">update</property>
<!-- Mapping files. -->
<mapping resource="business/model/Gerenciamento/Caixa.hbm.xml"/>
</session-factory>
</hibernate-configuration>