Встречается на собеседованиях • сегодня

Как реализуешь двухфазный коммит в транзакционном методе

Для реализации двухфазного коммита (2PC) в Java можно использовать JTA (Java Transaction API) с поддержкой XA-ресурсов. Пример с Spring и JPA:

java
@Transactional
public void transferMoney(Account from, Account to, BigDecimal amount) {
    // Фаза 1: Подготовка
    from.debit(amount);  // UPDATE account SET balance = balance - ?
    to.credit(amount);   // UPDATE account SET balance = balance + ?
    // Фаза 2: Фиксация выполняется автоматически после успешного выполнения метода
}

Ключевые моменты:

  1. Аннотация @Transactional обеспечивает 2PC для поддерживаемых ресурсов
  2. Для работы с XA-ресурсами (разные БД, очереди) нужен JTA-провайдер (Atomikos, Bitronix)
  3. При ошибке в фазе 1 произойдет откат всех изменений
  4. В Spring Boot можно настроить через spring.jta.enabled=true
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы