Boa tarde pessoal,
Estou enfrentando um problema aqui com o sistema que assumi recentemente para dar manutenção.
Por política da empresa, todo o acesso a base de dados é feita via Stored Procedures ( Utilizamos SQL Server 2008 ). Os desenvolvedores do projeto criaram então classes que herdam de StoredProcedure do Spring para executar os métodos de acesso a dados.
Entretanto, encontrei uma grave falha no design e não sei como corrigir isso. Tenho um método em uma classe que realiza as seguintes funções:
[list]Cria um projeto, registrando-o no banco de dados A[/list]
[list]Gera um chamado solicitando uma OI (ordem de investimento), registrando os dados no banco de dados B (através de uma SP executada na base A)[/list]
[list]Retorna uma mensagem de sucesso ao usuário e envia um e-mail com a descrição do chamado[/list]
Entretanto, se por acaso o projeto for criado com sucesso (métodoA) mas ocorrer uma falha na abertura de chamado(métodoB), mesmo tratando a Exception gerada pelo métodoB, não consigo efetuar o rollback das mudanças realizadas pelo métodoA.
Existe algum modo de criar uma transação com o banco no escopo do método, executar a minha lógica de negócio e só então realizar o commit das informações?
Não possuo muito conhecimento de Spring, mas andei pesquisando e aparentemente uma implementação de JTA poderia resolver o meu problema, alguma sugestão?
Agradeço desde já,
Um abraço à todos! Obrigado =]
