Galera,
Eu estou com um probleminha para definir um padrão para tratar as exeções que são geradas pelo Hibernate. Seguinte, estou usando o padrão Open Session In View que consta na Wiki do Hibernate para deixar o controle de abrir e fexar as transações com o banco por um Filter. Isso funciona legal quando não ocorre erro, como não estou usando nenhum FrameWork por enquanto em um projeto pequeno que estou fazendo, o controle de erro quem faz sou eu mesmo.
E tenho a seguinte situação: o Filter está sendo utilizado para todas as requisições com *.db onde efetuo operações pelo Hibernate. Ou seja, se estou em uma tela de cadastro onde listo todos os usuários e quero incluir um novo vou para um /incluiUsuario.db por exemplo e faço as operações em um Servlet que usa o Hibernate, e ao final tenho que renderizar novamente a página de cadastro com a lista dos usuários para mostrar o novo usuário adicionado.
Aí se eu forçar um erro nessa inclusão eu tenho que efetuar um rollback da transação e, como para listar novamente os usuários tenho que acessar o banco e vou para um mesmo servlet *.db que monta a view do listaUsuarios.jsp daria erro porque não foi criada uma nova transação após o erro gerado.
Então fica minha pergunta:“Como procedo para fazer essa verificação e se ocorrer um erro criar outra transação para a próxima operação com o banco?”. Existe algum padrão a seguir?
OBS: Para dar jeito nisso eu estou capturando o erro da chamada ao método que efetua as operações com o banco e dentro dele iniciando uma nova transação. Creio que não seja a melhor saída. Espero que me ajudem. Obrigado
Daniel Nunes