Sobes.tech
Назад к вопросам
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.