Tenho no meu sistema um método para salvar registros
/**
* Inclui os dados no banco segundo o objeto passado como argumento.
* @param obj objeto a ser incluido
* @return true se incluiu ou false se deu erro
*/
private boolean incluirRegistro(Object obj) {
boolean retorno = true;
Session sessao = HibernateUtil.getSessionRemota();
sessao.beginTransaction();
try {
sessao.save(obj);
sessao.getTransaction().commit();
} catch (Exception ex) {
sessao.getTransaction().rollback();
mensagem = TrataException.trataException(ex);
retorno = false;
} finally {
sessao.close();
}
return retorno;
}
no qual retorna true se salvou e false se não salvou…até aí beleza…
Minha dúvida seria…por exemplo se eu tiver que inserir uma lista de objetos…por exemplo uns mil objetos para o banco…
então se eu usasse esse método, ele iria abrir umas 1000 sessões?..ou o hibernate faz esse controle de sessão e reutiliza a que está ativa?
seria então correto eu abrir a sessao antes de enviar a listagem para o banco?
ficando o código assim;;
private boolean incluirRegistro(List lst) {
boolean retorno = true;
Session sessao = HibernateUtil.getSessionRemota();
sessao.beginTransaction();
try {
for (Object obj:lst){
sessao.save(obj);
}
sessao.getTransaction().commit();
} catch (Exception ex) {
sessao.getTransaction().rollback();
mensagem = TrataException.trataException(ex);
retorno = false;
} finally {
sessao.close();
}
return retorno;
}