Встречается на собеседованиях • сегодня

Есть ли операции, которые нельзя запустить в транзакциях

Некоторые операции в Java (особенно при работе с JDBC) нельзя выполнять внутри транзакции:

  1. DDL-операции (CREATE, ALTER, DROP) - многие СУБД автоматически завершают текущую транзакцию перед их выполнением
  2. Управление соединением (commit, rollback, setAutoCommit)
  3. Некоторые операции с ResultSet (при изменении уровня изоляции)

Пример:

java
Connection conn = dataSource.getConnection();
try {
    conn.setAutoCommit(false);
    Statement stmt = conn.createStatement();
    stmt.executeUpdate("CREATE TABLE temp_table (id INT)"); // Завершит транзакцию
    stmt.executeUpdate("INSERT INTO users VALUES (1, 'John')"); // Будет выполнено вне транзакции
    conn.commit(); // Не повлияет на предыдущие операции
} catch (SQLException e) {
    conn.rollback();
}
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы