Встречается на собеседованиях • сегодня
Как реализуешь двухфазный коммит в транзакционном методе
Для реализации двухфазного коммита (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: Фиксация выполняется автоматически после успешного выполнения метода
}Ключевые моменты:
- Аннотация
@Transactionalобеспечивает 2PC для поддерживаемых ресурсов - Для работы с XA-ресурсами (разные БД, очереди) нужен JTA-провайдер (Atomikos, Bitronix)
- При ошибке в фазе 1 произойдет откат всех изменений
- В Spring Boot можно настроить через
spring.jta.enabled=true

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы