Подтвердите концепцию ACID, когда мы используем модификатор rollbackFor Spring Transactional annotation - PullRequest
0 голосов
/ 28 марта 2019

Обработка транзакций - это обработка информации в информатике, которая делится на отдельные неделимые операции, называемые транзакциями.Каждая транзакция должна быть успешной или неудачной как единое целое;оно никогда не может быть выполнено только частично.

Обработка транзакций предназначена для поддержания целостности системы в известном, согласованном состоянии, гарантируя, что все взаимозависимые операции в системе либо успешно завершены, либо все успешно отменены. Википедия

С помощью транзакционного управления 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 Транзакционная аннотация ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...