Controle de transações usando filtro + DAO + struts

0 respostas
diego_arruda

Olá pessoal,

li algumas referências na internet e pelo que entendi, as melhores maneiras de fazer controle de transações + DAO são: utilizando filtro (quando WEB) ou utilizando Spring. Como minha aplicação é WEB, resolvi utilizar filtros que estou mais acostumado a usar e por isso acho mais simples.

Na minha aplicação WEB, meu filtro se encontra assim:

try {
	HibernateUtil.beginTransaction();
	chain.doFilter(request, response);
	HibernateUtil.commitTransaction();
} catch (Exception e) {
	HibernateUtil.rollbackTransaction();
} finally {
	HibernateUtil.closeSession();
}

Bem, o problema acontece quando venho a utilizar struts, pois eu deveria tratar as excerssões na action e retornar um findForward para o controler. Neste caso, quando a requisição for processada e voltar ao filtro, irá ser dado o commit, já que as excerssões foram tratadas para que possa dar o findForward correto.

A única solução que imaginei foi gravar uma flag quando for dado uma excerssão, e no filtro verificar a mesma para decidir se é pra dar o commit ou o rollback, ao invés de fazer isso num cloco try/catch.

Como achei essa solução muito feia, decidi pedir opiniões aqui na comunidade para saber se algum membro tem uma solução mais plausível.

Estou aberto a sugestões.

Agradeço desde já, um abraço.

PS: Se achou a explicação confusa, me avise para que possa tentar reformular melhor.

Criado 17 de novembro de 2006
Respostas 0
Participantes 1