Tags: поток_сознания

Spring и транзакции

Предположим, у нас есть код, который должен откатывать транзкцию в случае чего-либо.
Что меня откровенно не радует, что надо либо использовать @Transactional аннотацию с кодом вида

@Transactional
public void doSomething() {
//..... some logic
if (shit) {
throw new FuckupExceptionToForceRollback();
}
}


либо пользоваться некрасивым TransactionalTemplate и оборачивать код в TransactionCallback. Элегантного варианта нет. Или есть ?
Повесить AOP, который будет проверять результат, возвращаемый методом и в случае неудовлетворительного производить откат ?

Самое противное, что вот в спринге аоп слабенький, и если идёт вызов метода объекта уже из самого объекта, то мы видим не проксируемый метод, а оригинальный.