Назад к вопросам
СБЕР
Junior — Middle
62
Объясните, что подразумевается под транзакцией в контексте работы с базой данных
Компании, где спрашивали
Ответ от нейросети
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();
}
Таким образом, транзакция обеспечивает целостность данных при выполнении нескольких связанных операций.