#379 Откат транзакции при перехвате исключения

Компании:
Сбербанк
Темы:
SpringТранзакцииКод ревью

Что будет при вызове метода it(), если произойдет ошибка:

  1. В insert();
  2. В update()?
@Service
class Service {
    @Autowired
    private AccountRepository repository;

    public void it(Data data) {

        try {
            repository.doIt(data);
        } catch (Exception e) {
            // Логируем ошибку
            System.err.println("Error in service method: " + e.getMessage());
            // Дополнительная обработка ошибки, если необходимо
        }
    }
}

@Repository
class AccountRepository {

    @Transactional
    public void doIt(Data data) throws Exception {
        try {
            insert();
            update();
        } catch (Exception e) {
            // Логируем ошибку
            System.err.println("Error during transaction: " + e.getMessage());
            throw e; // Перебрасываем исключение
        }
    }

    private void insert() {
        // Логика для вставки данных
    }

    private void update() {
        // Логика для обновления данных
    }
}

Разбор вопроса

Ментор
Ответь как на реальном собеседовании. Я задам уточняющие вопросы, а затем сравню твой ответ с эталонным и покажу точность в %.
Войди, чтобы начать диалог Ментор ведёт диалог по текущему вопросу и учитывает предыдущие сообщения.
Войти