Controle de transações

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 -&gt POJO Service -&gt 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?

Não é a solução ideal, mas para esses casos onde tem que chamar vários métodos, por que não criar um método no Service que chama todos estes outros? Desta forma a transação será apenas uma.

Opa,

realmente não é uma boa idéia. Na verdade eu faço meio que isto só que por exemplo quando eu chamo o método que dá saída de materiais do estoque este método chama um outro que valida a quantidade em estoque, e se este método falhar, toda a transação deveria ser dada um rollback só que ele está criando uma transação para cada chamada… daí o problema…! Então ele dá o rollback na primeira, mas nas outras ele efetiva, gerando inconsistência nos dados.