Sobes.tech
Back to questions
Junior — Middle
63

Объясните, что подразумевается под транзакцией в контексте работы с базой данных

Companies where asked
СБЕРСБЕР

Answer from AI

sobes.tech AI

Транзакция в работе с базой данных — это последовательность операций, которая выполняется как единое целое. Она обладает четырьмя основными свойствами (ACID): атомарность, согласованность, изолированность и долговечность.

  • Атомарность: все операции внутри транзакции либо выполняются полностью, либо не выполняются вовсе.
  • Согласованность: транзакция переводит базу данных из одного корректного состояния в другое.
  • Изолированность: параллельные транзакции не влияют друг на друга.
  • Долговечность: после фиксации транзакции изменения сохраняются даже при сбоях.

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

Connection conn = dataSource.getConnection();
try {
    conn.setAutoCommit(false); // Начинаем транзакцию

    // Выполнение нескольких операций
    PreparedStatement ps1 = conn.prepareStatement("INSERT INTO users(name) VALUES (?)");
    ps1.setString(1, "Иван");
    ps1.executeUpdate();

    PreparedStatement ps2 = conn.prepareStatement("UPDATE accounts SET balance = balance - ? WHERE user_id = ?");
    ps2.setBigDecimal(1, new BigDecimal("100.00"));
    ps2.setInt(2, 1);
    ps2.executeUpdate();

    conn.commit(); // Фиксируем транзакцию
} catch (SQLException e) {
    conn.rollback(); // Откатываем транзакцию при ошибке
} finally {
    conn.setAutoCommit(true);
    conn.close();
}

Таким образом, транзакция обеспечивает целостность данных при выполнении нескольких связанных операций.