Sobes.tech
Назад к вопросам
Junior — Middle
69

Каким образом осуществляется контроль за завершением транзакции и её откатом при необходимости?

Компании, где спрашивали
СБЕРСБЕР

Ответ от нейросети

sobes.tech AI

В Java контроль за завершением транзакции и её откатом обычно осуществляется с помощью API управления транзакциями, например, через JDBC или фреймворки типа Spring.

Основной подход:

  • Начинается транзакция (например, connection.setAutoCommit(false) в JDBC).
  • Выполняются необходимые операции с базой данных.
  • Если все операции прошли успешно, вызывается commit(), чтобы зафиксировать изменения.
  • Если возникает исключение или ошибка, вызывается rollback(), чтобы отменить все изменения, сделанные в рамках транзакции.

Пример с использованием JDBC:

Connection connection = null;
try {
    connection = dataSource.getConnection();
    connection.setAutoCommit(false); // начало транзакции

    // Выполнение операций с БД

    connection.commit(); // подтверждение транзакции
} catch (SQLException e) {
    if (connection != null) {
        try {
            connection.rollback(); // откат транзакции при ошибке
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }
    e.printStackTrace();
} finally {
    if (connection != null) {
        try {
            connection.setAutoCommit(true);
            connection.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

В Spring Framework можно использовать аннотацию @Transactional, которая автоматически управляет транзакциями, вызывая commit или rollback в зависимости от успешности выполнения метода.