Введение

Java Database Connectivity (JDBC) — это основанная на Java технология доступа к данным, используемая для подключения к базе данных Java. Это часть платформы Java Standard Edition, предоставляемой корпорацией Oracle. Транзакции в базах данных важны для поддержания свойств ACID (атомарность, непротиворечивость, изоляция, устойчивость) для обеспечения целостности данных.

Транзакция — это набор из одного или нескольких операторов, которые выполняются как единое целое, поэтому выполняются либо все операторы, либо ни один. В этой статье мы узнаем о реализации транзакций в Java с использованием JDBC.

Основы транзакций JDBC

По умолчанию при создании соединения оно находится в режиме автоматической фиксации. Это означает, что каждый отдельный оператор SQL рассматривается как транзакция и автоматически фиксируется сразу после его выполнения. Для управления транзакциями вручную необходимо отключить режим автофиксации методом setAutoCommit(false). После этого никакие операторы SQL не будут зафиксированы, пока вы не вызовете метод commit() явно. Если вы хотите прервать транзакцию, вы можете вызвать метод rollback().

Вот пример того, как вы можете использовать эти методы:

Connection conn = null;

try {
    // assuming you have a DataSource, ds
    conn = ds.getConnection();

    // disable auto-commit mode
    conn.setAutoCommit(false);

    // perform SQL operations...

    // commit the transaction
    conn.commit();
} catch (SQLException e) {
    // if any error occurs
    e.printStackTrace();

    if (conn != null) {
        try {
            // rollback the transaction
            conn.rollback();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }
} finally {
    if (conn != null) {
        try {
            conn.close();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }
}

Детальное управление транзакциями

Подробный процесс управления транзакциями включает в себя несколько шагов: выполнение операторов SQL, проверка операторов, принятие решения о фиксации или откате и, наконец, фиксация или откат транзакции.

1. Выполнение операторов SQL