Olá, estou começando a usar hibernate + spring + spring annotations e estou com algumas dúvidas com relação a transações.
Basicamente tenho:
BackingBean -> POJO Service -> DAO.
Sem Spring o que eu fazia, eu tinha um Filtro que abria e fechava transação por request, e se alguma exceção fosse gerada, tando as marcadas no Throws quando as de tempo de execução, faziam com que o rollback fosse chamado.
Alguns métodos do meu service chama outras operações de outros POJOs service para realizar uma operação. Cada operação desta pode operar independentemente, como por exemplo: Fabricar produto onde basicamente tenho:
Criar Registro de Fabricação, dar baixa no estoque das matérias primas usadas, dar entrada no estoque das matérias primas usadas. Calcular custo médio de fabricação ajustar preço de venda. Principalmente nas duas operações do meio alguma anomalia como estoque insuficiente, é muito comum onde eu gero uma exceção criada por mim ServiceManagerExecption, e tenho que dar um rollback na transação.
A questão é usando Spring e SpringAnnotations coloquei a anotação @transctional(propagation=Propagation.REQUIRED) nos métedos do Dao e na Interface do POJO Service. O que está acontecendo é: ele executa cada método e cada operação como se fosse uma transação para cada operação. Alguém tem alguma idéia de como posso fazer semelhante a idéia que eu usava antes de incorporar o Spring?