bom dia pessoal 
tenho uma aplicação que, ao selecionar alguma versão do backup do banco de dados (um arquivo .tar), dropa o base, recria a base (utilizando o dropdb e o createdb do postgre :D), e importa o backup selecionado.
até ai blz, ela funciona perfeitamente. mas quando eu tiro algum relatório dessa base, eu instancio o hibernate, e quando tento selecionar outro backup para ver os relatórios dessa base, não consigo realizar o drop da base, pois o postgre diz que ainda tem um usuário conectado com o base, por isso não pode deletar.
meu código atual esta assim
monitor.beginTask("Deletando base de dados existente", -1);
//Se o contexto é diferente de null, significa que o hibernate ja foi instanciado
if(ApplicationContextUtils.getContext() != null){
ComboPooledDataSource c3 =
(ComboPooledDataSource) ApplicationContextUtils.getBean("pooledDataSource");
c3.close();
SessionFactoryImpl factory =
(SessionFactoryImpl) ApplicationContextUtils.getBean("sessionFactory");
System.err.println("Desconectando o hibernate!");
if(factory != null){
System.err.println("SF não é null!");
factory.getCurrentSession().close();
factory.close();
}
}
DBUtil.dropFranquia();
como eu faço pra, vamos dizer assim, desinstanciar o hibernate?