Использование аннотации Spring @Transactional - PullRequest
1 голос
/ 18 июня 2020

У меня есть несколько операций (служебные вызовы, но я думаю, это не важно), которые мне нужно выполнить атомарно. Допустим, у меня есть операции A, B и C, которые читают и записывают DB несколько раз, и мне нужно:

  • B, чтобы увидеть изменения DB, которые сделал A (и C, чтобы увидеть, что A и B сделал). Это важно, потому что некоторые операции используют результаты предыдущих операций.
  • Все остальные (скажем, некоторые другие транзакции) НЕ видят изменений (например, если они читают БД), пока все три операции не будут завершены и транзакция не будет зафиксирована в целом (или откатился, если что-то пойдет не так). Это важно, потому что рассматриваемые таблицы БД не согласованы, пока все эти операции не будут завершены.

Я думаю, что @Transactional (как в примере ниже) - это именно то, что мне здесь нужно (с правильно настроенной изоляцией et c.), но я не уверен. Могу ли я использовать @Transactional для решения этой проблемы? Если да, то как правильно настроить? Спасибо.

@Transactional(...)
public void someTransactionalMethod(...) {
  callA();
  callB();
  callC();
}

PS: вы можете предложить, чтобы я попытался разработать вещи немного по-другому (лучше), но, боюсь, это выходит за рамки возможного. Я ограничен существующим кодом et c. (например, внутренняя работа большинства из этих операций не находится под моим контролем).

1 Ответ

0 голосов
/ 30 июня 2020

Очевидно @Transactional - это именно то, что мне здесь нужно. Спасибо @ cool

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