Spring и транзакции
Предположим, у нас есть код, который должен откатывать транзкцию в случае чего-либо.
Что меня откровенно не радует, что надо либо использовать @Transactional аннотацию с кодом вида
либо пользоваться некрасивым TransactionalTemplate и оборачивать код в TransactionCallback. Элегантного варианта нет. Или есть ?
Повесить AOP, который будет проверять результат, возвращаемый методом и в случае неудовлетворительного производить откат ?
Самое противное, что вот в спринге аоп слабенький, и если идёт вызов метода объекта уже из самого объекта, то мы видим не проксируемый метод, а оригинальный.
Что меня откровенно не радует, что надо либо использовать @Transactional аннотацию с кодом вида
@Transactional
public void doSomething() {
//..... some logic
if (shit) {
throw new FuckupExceptionToForceRollback();
}
}
либо пользоваться некрасивым TransactionalTemplate и оборачивать код в TransactionCallback. Элегантного варианта нет. Или есть ?
Повесить AOP, который будет проверять результат, возвращаемый методом и в случае неудовлетворительного производить откат ?
Самое противное, что вот в спринге аоп слабенький, и если идёт вызов метода объекта уже из самого объекта, то мы видим не проксируемый метод, а оригинальный.