English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Если соединение JDBC находится в режиме автоматического выполнения запросов (по умолчанию это автоматическое выполнение запросов), то каждая SQL-запрос перед выполнением будет отправлена в базу данных. Это может быть хорошо для простых приложений, но по трем причинам может быть полезно отключить автоматическое выполнение и управлять своими транзакциями-
Для повышения производительности.
Поддерживать целостность бизнес-процесса.
Использование распределенных транзакций.
Транзакция позволяет вам контролировать, когда и какие изменения применяются к базе данных. Она рассматривает одиночное SQL-выражение или группу SQL-выражений как логическую единицу, и если любая из них не удалась, вся транзакция будет неудачной.
Чтобы включить поддержку ручных транзакций вместо использования JDBC-драйвером по умолчаниюАвтоматический коммитРежим, пожалуйста, используйте метод объекта ConnectionsetAutoCommit()Метод. Если передать булево значение false в setAutoCommit( ), автоматическая функция коммита будет отключена. Вы можете передать булево значение true, чтобы снова открыть ее.
Например, если у вас есть объект Connection под названием conn, напишите следующий код, чтобы отключить автоматический коммит-
conn.setAutoCommit(false);
После завершения изменений и необходимости их применения, пожалуйстаВызов метода на объекте подключенияcommit(), как показано ниже:
conn.commit( );
В противном случае, чтобы откатить обновления в базе данных, выполненные с использованием Connection под названием conn, используйте следующий код-
conn.rollback( );
Ниже приведен пример использования объектов коммита и откатов-
try{ // Предположим, что у нас есть эффективный объект подключения conn conn.setAutoCommit(false); Statement stmt = conn.createStatement(); String SQL = "INSERT INTO Employees " + "VALUES (106, 20, 'Rita', 'Tez')"; stmt.executeUpdate(SQL); // Подтвердите форматировку SQL-запроса, который прервется String SQL = "INSERTED IN Employees " + "VALUES (107, 22, 'Sita', 'Singh')"; stmt.executeUpdate(SQL); // Если нет ошибок. conn.commit(); } // Если есть любая ошибка. conn.rollback(); }
В этом случае, ни одно из вышеуказанных предложений INSERT не будет успешным, и все изменения будут откатаны.
Чтобы лучше понять, давайте рассмотрим “Пример кода коммита.
Новый интерфейс Savepoint JDBC 3.0 предоставляет вам другие возможности управления транзакциями. Большинство современных DBMS поддерживают точки сохранения в своих средах, например, PL / SQL Oracle.
При установке точки сохранения вы можете определить логическую точку откатов в транзакции. Если после точки сохранения возникнет ошибка, вы можете использовать метод откатов, чтобы аннулировать все изменения, или только изменения, сделанные после точки сохранения.
Объект Connection имеет два новых метода, которые помогут вам управлять точками сохранения-
setSavepoint(String savepointName):Определите новую точку сохранения. Она также возвращает объект Savepoint.
releaseSavepoint(Savepoint savepointName):Удалите точку сохранения. Обратите внимание, что она требует объекта Savepoint в качестве параметра. Этот объект обычно создается методом setSavepoint().
rollback (String savepointName)Метод может откатить работу до указанной точки сохранения.
Ниже приведен пример использования объекта Savepoint-
try{ // Предположим, что у нас есть эффективный объект подключения conn conn.setAutoCommit(false); Statement stmt = conn.createStatement(); // Установить точку сохранения Savepoint savepoint1 = conn.setSavepoint("Savepoint1"); String SQL = "INSERT INTO Employees " + "VALUES (106, 20, 'Rita', 'Tez')"; stmt.executeUpdate(SQL); // Подтвердите форматировку SQL-запроса, который прервется String SQL = "INSERTED IN Employees " + "VALUES (107, 22, 'Sita', 'Tez')"; stmt.executeUpdate(SQL); // Если нет ошибок, пожалуйста, подтвердите изменения. conn.commit(); } // Если есть любая ошибка. conn.rollback(savepoint1); }
В этом случае, ни одно из вышеуказанных предложений INSERT не будет успешным, и все изменения будут откатаны.
Чтобы лучше понять, давайте рассмотримSavepoints-пример кода.