Назад к вопросам
Middle
7
Как управлять транзакциями в Java-коде? Как это делается через JDBC?
Компании, где спрашивали
Финансовые платформы
Ответ от нейросети
sobes.tech AI
В Java управление транзакциями можно делать программно или декларативно (например, с помощью Spring). Через JDBC транзакции управляются вручную:
- Отключаете автокоммит:
connection.setAutoCommit(false); - Выполняете необходимые SQL операции
- Если все прошло успешно, вызываете
connection.commit(); - Если возникла ошибка, вызываете
connection.rollback(); - В конце можно вернуть автокоммит в исходное состояние, если нужно
Пример:
Connection connection = null;
try {
connection = dataSource.getConnection();
connection.setAutoCommit(false); // отключаем автокоммит
// Выполнение SQL операций
PreparedStatement stmt = connection.prepareStatement("INSERT INTO users(name) VALUES (?)");
stmt.setString(1, "John");
stmt.executeUpdate();
// Другие операции
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 ex) {
ex.printStackTrace();
}
}
}
Такой подход даёт полный контроль над транзакцией на уровне JDBC.