Analisando este trecho de código.
public Time carregar(Long id){
//HibUtil.getSessao().close();
Time time = (Time) HibUtil.getSessao().load(Time.class, id);
HibUtil.getSessao().close();
return time;
}
public void atualizar(Time time){
Time atual = carregar(time.getId());
atual.setNome(time.getNome());
HibUtil.getSessao().update(atual);
HibUtil.getSessao().beginTransaction().commit();
HibUtil.getSessao().close();
}
Lá vai a minha pergunta , esse método HibUtil.getSessao() retorná cada vez uma nova sessão ou reutiliza a mesma.
Se eu estiver enganado me corrija , mas a sessão do Hibernate por seu uma coisa custoza no sistema só deve ser carregado apenas uma vez.
Ou seja, mesmo que você continue tendo este método você deve retorna sempre a mesma sessão. Porque cada vez que você cria uma nova sessão todas as suas classes mapeadas serão carregadas.
E outra coisa só no método carregar você está abrindo a conexão 2 vezes , no método atualizar 3 vezes .
Cria uma nova sessão é carrega um Time com o id passado.
Cria uma nova sessão e fecha ao mesmo tempo.
Dá uma olhada nisso.