Se o spring estiver controlando as transações no método (@Transactional) ele irá dar rollback quando ocorrer qualquer runtime exception, por default.
Você pode configurar as propriedades rollbackFor ou noRollbackFor para definir as exceptions.
Andre_Fonseca
oi
eu acho que você pode fazer o seguinte
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
TransactionStatus status = txManager.getTransaction(def);
try {
// execute your business logic here
}
catch (MyException ex) {
txManager.rollback(status);
throw ex;
}
txManager.commit(status);
Legal mas acho que não precisa. O spring já faz isso por você… é só usar a anotação @Transactional. Você pode definir propagação, isolação e rollbacks. Basta configurar o spring da forma correta e seu código vai ficar mais limpo.
Você pode usar a anotação @Transactional na sua classe ou métodos. Além disso, você pode definir readOnly = true para não existir persistência de dados.
@Transactional
public abstract User saveUser( User user );