1. Что такое Java-транзакция?
Распространено мнение, что транзакции имеют отношение только к базе данных.
Транзакции должны соответствовать принципам ACID, установленным ISO/IEC. ACID — это аббревиатура, обозначающая атомарность, последовательность, изоляцию и долговечность. Атомарность транзакции означает, что любой сбой во время выполнения транзакции приведет к тому, что любые изменения, внесенные транзакцией, станут недействительными. Согласованность означает, что в случае сбоя транзакции все данные, затронутые транзакцией, должны быть восстановлены до состояния, существовавшего до ее выполнения. Изоляция означает, что изменения данных во время выполнения транзакции не видны другим транзакциям до ее фиксации. Постоянство означает, что статус отправленных данных должен быть правильным в случае сбоя выполнения транзакции.
Популярное понимание состоит в том, что транзакция представляет собой набор атомарных операций. С точки зрения базы данных это набор инструкций SQL. Либо все они успешно выполняются. Если по какой-либо причине одна из инструкций имеет ошибку, все. ранее выполненные инструкции будут отменены. Более простой ответ: либо все выполнения успешны, либо они отменяются и не выполняются.
Поскольку концепция транзакций исходит из базы данных, что такое транзакция Java? Какая связь?
Фактически, если прикладная система Java хочет управлять базой данных, она реализуется через JDBC. Добавление, изменение и удаление реализуются косвенно через соответствующие методы, и управление транзакциями также соответствующим образом передается программному коду Java. Поэтому транзакции операций с базой данных традиционно называются транзакциями Java.
2. Зачем нужны транзакции
Транзакции предназначены для решения операций по обеспечению безопасности данных. Контроль транзакций фактически предназначен для контроля безопасного доступа к данным. Вот простой пример: например, в сфере банковских переводов счет A хочет перевести 1000 юаней со своего счета на счет B. Сначала из баланса счета A необходимо вычесть 1000 юаней, а затем из баланса счета B необходимо вычесть 1000 юаней. будет увеличена на 1000 юаней. Если в промежуточной сети возникла проблема, списание 1000 юаней со счета А закончилось, а операция Б не удалась из-за сбоя в работе сети, то весь бизнес терпит неудачу, и необходимо провести контроль, требующий отмены перевода. дела на счете А. Это может обеспечить правильность ведения бизнеса. Для завершения этой операции требуется транзакция. Уменьшение средств счета A и увеличение средств счета B объединяются в одну транзакцию. Либо все выполнения успешны, либо все операции отменены. тем самым обеспечивая безопасность данных.
3. Типы Java-транзакций
Существует три типа транзакций Java: транзакции JDBC, транзакции JTA (Java Transaction API) и транзакции контейнера.
1. Транзакции JDBC
Транзакции JDBC контролируются с помощью объектов Connection. Интерфейс JDBC Connection (java.sql.Connection) предоставляет два режима транзакций: автоматическую отправку и отправку вручную. java.sql.Connection предоставляет следующие методы для управления транзакциями:
public void setAutoCommit (логическое значение)
общедоступное логическое значение getAutoCommit()
публичная недействительная фиксация()
откат публичной пустоты()
При использовании разграничения транзакций JDBC вы можете объединить несколько операторов SQL в одну транзакцию. Одним из недостатков транзакций JDBC является то, что объем транзакции ограничен одним подключением к базе данных. Транзакция JDBC не может охватывать несколько баз данных.