Sobes.tech
Middle
40

Чӣ гуна метавон транзаксияҳоро дар коди Java идора кард? Инро тавассути JDBC чӣ гуна кардан мумкин аст?

Ширкатҳо дар куҷо пурсиданд
Финансовые платформы

Ҷавоб аз AI

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.