Duvida ao fazer rollback

3 respostas
arthurminarini

pessoal quando abro uma transação eu fasso assim (não esta dando problema) é só uma duvida

getSession().clear();        
        try {            
            getSession().beginTransaction();
            ..
            ..
            ..
            ..
            getSession().getTransaction().commit();
            getSession().flush();
        } catch (HibernateException e) {//<<<<<<<coloquei duas classes para evitar que cause um erro que não seje de hibernate e não faça o rollback
            operacao = false;
            getSession().getTransaction().rollback();
            e.printStackTrace();
        } catch (Exception e) {
            operacao = false;
            getSession().getTransaction().rollback();            
        }

existe a classe Throwable que é o pai de todas, qual classe vcs recomendariam, lembrando que eu não quero tratar os erros eu quero apenas garantir que qualquer tipo de erro vai dar rollback

3 Respostas

Lavieri

arthurminarini:
pessoal quando abro uma transação eu fasso assim (não esta dando problema) é só uma duvida

getSession().clear();        
        try {            
            getSession().beginTransaction();
            ..
            ..
            ..
            ..
            getSession().getTransaction().commit();
            getSession().flush();
        } catch (HibernateException e) {//<<<<<<<coloquei duas classes para evitar que cause um erro que não seje de hibernate e não faça o rollback
            operacao = false;
            getSession().getTransaction().rollback();
            e.printStackTrace();
        } catch (Exception e) {
            operacao = false;
            getSession().getTransaction().rollback();            
        }

existe a classe Throwable que é o pai de todas, qual classe vcs recomendariam, lembrando que eu não quero tratar os erros eu quero apenas garantir que qualquer tipo de erro vai dar rollback

Exception vc nunca terá, visto que as exceptions são avisadas quando vai ter…

se quiser garantir algo a mais que o hibernate não tenha previsto use RuntimeException… no lugar de exception

faça assim

getSession().clear(); try { getSession().beginTransaction(); .. .. .. .. getSession().getTransaction().commit(); getSession().flush(); } catch (HibernateException e) { operacao = false; getSession().getTransaction().rollback(); // e.printStackTrace(); <== não faça isso Logger.getLogger(getClass()).warn("this transaction was not commited",e); //<== logar é melhor } catch (RuntimeException e) { operacao = false; getSession().getTransaction().rollback(); Logger.getLogger(getClass()).erro("unexpected exception, transaction was not commited",e); }

arthurminarini

Lavieri:
arthurminarini:
pessoal quando abro uma transação eu fasso assim (não esta dando problema) é só uma duvida

getSession().clear();        
        try {            
            getSession().beginTransaction();
            ..
            ..
            ..
            ..
            getSession().getTransaction().commit();
            getSession().flush();
        } catch (HibernateException e) {//<<<<<<<coloquei duas classes para evitar que cause um erro que não seje de hibernate e não faça o rollback
            operacao = false;
            getSession().getTransaction().rollback();
            e.printStackTrace();
        } catch (Exception e) {
            operacao = false;
            getSession().getTransaction().rollback();            
        }

existe a classe Throwable que é o pai de todas, qual classe vcs recomendariam, lembrando que eu não quero tratar os erros eu quero apenas garantir que qualquer tipo de erro vai dar rollback

Exception vc nunca terá, visto que as exceptions são avisadas quando vai ter…

se quiser garantir algo a mais que o hibernate não tenha previsto use RuntimeException… no lugar de exception

faça assim

getSession().clear(); try { getSession().beginTransaction(); .. .. .. .. getSession().getTransaction().commit(); getSession().flush(); } catch (HibernateException e) { operacao = false; getSession().getTransaction().rollback(); // e.printStackTrace(); <== não faça isso Logger.getLogger(getClass()).warn("this transaction was not commited",e); //<== logar é melhor } catch (RuntimeException e) { operacao = false; getSession().getTransaction().rollback(); Logger.getLogger(getClass()).erro("unexpected exception, transaction was not commited",e); }

por que nao dar o printstacktrace
ele é mais pesado
e o Logger nao ficara mais lento ou coisa parecida.

tem como me informar

Lavieri

arthurminarini:
Lavieri:
arthurminarini:
pessoal quando abro uma transação eu fasso assim (não esta dando problema) é só uma duvida

getSession().clear();        
        try {            
            getSession().beginTransaction();
            ..
            ..
            ..
            ..
            getSession().getTransaction().commit();
            getSession().flush();
        } catch (HibernateException e) {//<<<<<<<coloquei duas classes para evitar que cause um erro que não seje de hibernate e não faça o rollback
            operacao = false;
            getSession().getTransaction().rollback();
            e.printStackTrace();
        } catch (Exception e) {
            operacao = false;
            getSession().getTransaction().rollback();            
        }

existe a classe Throwable que é o pai de todas, qual classe vcs recomendariam, lembrando que eu não quero tratar os erros eu quero apenas garantir que qualquer tipo de erro vai dar rollback

Exception vc nunca terá, visto que as exceptions são avisadas quando vai ter…

se quiser garantir algo a mais que o hibernate não tenha previsto use RuntimeException… no lugar de exception

faça assim

getSession().clear(); try { getSession().beginTransaction(); .. .. .. .. getSession().getTransaction().commit(); getSession().flush(); } catch (HibernateException e) { operacao = false; getSession().getTransaction().rollback(); // e.printStackTrace(); <== não faça isso Logger.getLogger(getClass()).warn("this transaction was not commited",e); //<== logar é melhor } catch (RuntimeException e) { operacao = false; getSession().getTransaction().rollback(); Logger.getLogger(getClass()).erro("unexpected exception, transaction was not commited",e); }

por que nao dar o printstacktrace
ele é mais pesado
e o Logger nao ficara mais lento ou coisa parecida.

tem como me informar

pq o logg vc vê e print screen n…

Criado 14 de outubro de 2009
Ultima resposta 14 de out. de 2009
Respostas 3
Participantes 2