Como tratar exception que ocorrem no hibernate

Ola, estou com problemas para tratar exception no hibernate, por exemplo:

Session sessao = HibernateUtility.getSession();
Transaction tx = sessao.beginTransaction();

Curso curso = new Curso();
curso.setNome("Desenvolvimento de Software");
curso.setDescricao("Curso só pra programadores");

sessao.save(curso);
transaction.commit();
sessao.close();

Observei que nao foi necessário colocar a rotina sessao.save(curso) dentro de um bloco try catch ! E se por acaso der algum erro e o hibernate nao consiguir persisir o objeto ?

coloque um tratamento simples de try…catch
implemente uma exception que Identifique claramente oque aconteceu lance sua exception e trate-a, e nao esqueca de dar rollback na transacao :wink:

Se for um ambiente CMT voce vai ter que usar outra abordagem

É justamente o que gostaria de fazer, mas acho estrano o hibernate nao lancar nenhuma exception na chamada de suas rotinas. Eu pensei em algo do genero:

try{
 sessao.save(curso);
 transaction.commit();
 sessao.close();
}catch(NaoSeiException ex){
 transaction.rolback();
}

Me pergunto… seria uma RuntimeException !? Como vc implementaria ?
O exemplo do codigo acima foi so como exemplo… mas o tratamento de exception que estou tentando criar esta relacionado aos meus DAOs como segue o artigo do hibernate
http://www.hibernate.org/328.html
Não consegui implementar o tratamento de exception nesse caso.
Desde já muito obrigado.

eu faria algo do genero

public void saveObject (Object instObject) throws MySaveException { 
    try{
        sessao.save(instObject);
        transaction.commit();
        sessao.close();
    }catch(java.lang.Exception ex){
        transaction.rolback();
        throw new MySaveException(ex);
    }
} 

Não esquecendo de passar o objeto que contem o stacktrace para sua exception, ou voce ira perder toda a informacao pertinente para tratar o erro.

de uma lida neste post antes de tudo pra entender o pq de tanto cuidado.
http://fragmental.com.br/blog/?p=270

[quote=fmeyer]eu faria algo do genero

public void saveObject (Object instObject) throws MySaveException { 
    try{
        sessao.save(instObject);
        transaction.commit();
        sessao.close();
    }catch(java.lang.Exception ex){
        transaction.rolback();
        throw new MySaveException(ex);
    }
} 

Não esquecendo de passar o objeto que contem o stacktrace para sua exception, ou voce ira perder toda a informacao pertinente para tratar o erro.

de uma lida neste post antes de tudo pra entender o pq de tanto cuidado.
http://fragmental.com.br/blog/?p=270
[/quote]

capturar a Exception inteira eu acho complicado, pois pode mascarar erros de Runtime que nao tem nada a ver com hibernate
todas as excecoes do hibernate derivam (ou sao encapsuladas) por um HibernateException… capture essa