Простое использование транзакций Java
Акции Java будут спросить во время некоторых интервью.
Во время интервью первое, что нам нужно ответить, это: транзакции могут обеспечить целостность и согласованность данных.
Если навыки глубже: просто поговорите о некоторых принципах (установите не представлять задачи до начала задачи, и отправьте задачи после выполнения всех задач.
Если задача отключена в середине, будет выполнена откат, и предыдущая задача будет отменена), и будет приведен простой пример (например, вопрос о сбережении и снятии денег.
Например: банк передает деньги между двумя счета, переводы со счета A на счет B на 1000 юаней. Система сначала уменьшает учетную запись A на 1000 юаней, а затем добавляет 1000 юаней в учетную запись B. Если все выполнения успешны, база данных находится в согласованности; Если только изменение суммы учетной записи A завершена без увеличения количества учетной записи B, база данных находится в непоследовательном состоянии, и предыдущая операция должна быть отменена. )
В этой статье кратко обсуждаются транзакции Java. Когда мы спрашиваем о транзакциях Java, мы должны знать, что это связано с базами данных.
один. Сначала посмотрим на простой код
Используйте JDBC для выполнения обработки транзакций
public int delete (int sid) {// class, который реализует базу данных DatabaseConnection dbc = new DatabaseConnection (); // Получить соединение Connection Connection cons = dbc.getConnection (); try {con.setautocommit (false); // Изменить метод совершения по умолчанию транзакций JDBC dbc.executeUpdate ("Удалить из xiao, где id =" + sid); dbc.executeupdate ("удалить из xiao_content, где id =" + sid); dbc.executeupdate ("Delete с xiao_affix, где bylawid =" + sid); con.commit (); // Commit jdbc транзакция con.setautocommit (true); // восстановить метод совершения по умолчанию транзакции JDBC DBC.Close (); возврат 1; } catch (Exception Exc) {con.rollback (); // Rolle Back jdbc транзакция dbc.close (); возврат -1; }} Приведенный выше код представляет собой простое выполнение транзакции Java.
Вышеуказанные три раза операций по удалению выполняются. Пока кто -то не удастся, задача будет отменена назад, что эквивалентно успехам вместе, либо ничего не сделано.
Если нет управления транзакциями, предыдущее выполнение будет немедленно обновлено в базе данных.
Выйдите из последующих задач, где бы выработалось, и согласованность данных не может быть гарантирована.
два. Основная концепция транзакций Java
Атомность: транзакция - это полная операция. Операции транзакции неотделимы (атомно);
Либо выполнить их, либо никто из них
Последовательность: Когда транзакция завершается, данные должны быть в согласованном состоянии.
Изоляция: все параллельные транзакции, которые изменяют данные, выделяются друг от друга, что означает, что транзакция должна быть независимой.
Он не должен зависеть от других транзакций или влиять на другие транзакции (долговечность): после завершения транзакции ее модификации в базу данных постоянно поддерживаются, и журнал транзакций может поддерживать постоянство транзакции.
Описание обработки транзакций Java: Если вы выполняете несколько операций в базе данных, каждое выполнение или шаг - это транзакция.
Если операция базы данных не выполняется на определенном шаге или происходит исключение, что приводит к сбое транзакции, поэтому некоторые транзакции выполняются, а некоторые не выполняются.
Это приводит к откату транзакции и отменяет предыдущие операции ...
В операции базы данных транзакция относится к неразделимой единице работы, состоящей из одной или нескольких операторов SQL, которые обновляют базу данных.
Только когда все операции в транзакции обычно выполняются обычно, может быть отправлена вся транзакция в базу данных. Если операция не завершена,
Вся транзакция должна быть отменена.
Например, в банковских транзакциях, предположим, что Zhang San переводит 1000 юаней со своего счета на счет Li Si, соответствующие заявления SQL являются следующими:
Обновление учетной записи Установите деньги = Monery-1000, где name = 'Zhangsan'
Обновление учетной записи установите деньги = Monery+1000, где name = 'lisi'
Эти два утверждения должны быть обработаны как завершенная транзакция. Эта транзакция может быть отправлена только тогда, когда оба успешно выполнены.
Если одно предложение не удается, вся транзакция должна быть отозвана.
В классе соединения есть 3 метода управления транзакциями:
(1) setautocommit (boolean autocommit): установить, автоматически отправлять транзакции;
(2) Commit (); совершить(); совершать транзакцию;
(3) hollback (); отменить транзакцию;
В API JDBC случай по умолчанию заключается в автоматическом совершении транзакций, то есть каждое обновление в базе данных представляет транзакцию.
После того, как операция будет успешной, система автоматически вызывает Commet () для Commit, в противном случае Rollback () будет вызван для отмены транзакции.
В API JDBC автоматическое представление транзакций может быть запрещено, вызывая setautocommit (false).
Затем вы можете использовать несколько операторов SQL, которые обновляют базу данных в качестве транзакции. После того, как все операции завершены, Commit () призван сделать общее представление.
Если одна из операций SQL не будет выполнена, метод Commit () не будет выполнен, но соответствующее SQLEXCEPTION будет сгенерировано.
В настоящее время вы можете поймать исключение в кодовом блоке, вызовите метод Rollback (), чтобы отменить транзакцию.
Вообще говоря, разработчики, которые специализируются на разработке баз данных, должны иметь глубокое понимание транзакций.
Но средний программист не должен тратить много времени в этом отношении. Просто иметь понимание общего эффекта.
Спасибо за чтение, я надеюсь, что это поможет вам. Спасибо за поддержку этого сайта!