Olá,
Tenho uma dúvida que deve ser simples.
Se eu fizer o seguinte: abrir um transação usando hibernate, inserir, caso não de erros, dou um comit, e em caso de erro eu NÂO DER UM ROLLBACK, o que acontece quando eu der um flush e um close, ele da automaticamente o rollback?
Não quero dar o rollback, pra economizar código.
Ou o ideal é dar o rollback?
package com.wpbrainiac.dao;
import com.wpbrainiac.pojo.Produto;
import org.hibernate.Session;
import org.hibernate.Transaction;
/**
*
* @author Thiago Felipe Festa
*/
public class ProdutoDAO {
private Session session;
private Transaction transaction;
public ProdutoDAO(Session session) {
this.session = session;
}
public void salvar(Produto p) throws Exception {
this.transaction = this.session.beginTransaction();
this.session.save(p);
this.transaction.commit();
this.session.flush();
this.session.close();
}
}
Produto p = new Produto();
p.setNome("Nome aqui");
p.setDescricao("Descrição aqui");
p.setPreco(100.50);
Session session = new HibernateUtil().getSession();
ProdutoDAO produtoDAO = new ProdutoDAO(session);
try {
produtoDAO.salvar(p);
} catch(Exception e) {
//IREI PRECISAR DE UM GET NO DAO PARA DAR O .rollback(); isso é chato!
// MENSAGEM DE ERRO AQUI!
}