Обработка транзакций - это обработка информации в информатике, которая делится на отдельные неделимые операции, называемые транзакциями.Каждая транзакция должна быть успешной или неудачной как единое целое;оно никогда не может быть выполнено только частично.
Обработка транзакций предназначена для поддержания целостности системы в известном, согласованном состоянии, гарантируя, что все взаимозависимые операции в системе либо успешно завершены, либо все успешно отменены. Википедия
С помощью транзакционного управления Spring мы могли бы использовать модификатор rollbackFor .
Основная цель этого модификатора:
Определяет ноль (0) или более классов исключений, которые должны быть подклассами Throwable, указывая, какие типы исключений должны вызывать откат транзакции.
Я нашел такой метод:
@Transactional(rollbackFor = {SubscriptionException.class}, transactionManager = "txManager")
public void subscription(User user) throws SubscriptionException {
operationA(user);
operationB(user); // could throw a SubscriptionException
operationC(user);
}
Если operationC
не удастся, изменения, сделанные с помощью operationA
и operationB
, сохранятся.ИМХО, свойство " Атомность " концепции ACID нарушено в этой транзакции.
Как обеспечить концепцию ACID, когда мы используем модификатор rollbackFor
из Spring Транзакционная аннотация ?