Преждевременная оптимизация является первопричиной всех бед в программировании. Дональд Кнут

Какими бывают транзакции в Spring?

Заметьте, данный пост не является справочником по работе с транзакциями в Spring, а лишь описывает способы распространения транзакций.

Пожалуйста, будьте ознакомлены с разницей между физическими и логическими транзакциями.

В посте рассматривается версия Spring 2.5.4

Транзакции в Spring могут принимать следующие значения:

  1. REQUIRED – Является значением по умолчанию. Поддерживает текущую транзакцию, создает новую если транзакция ещё не существует. Аналогичен с атрибутом в EJB транзакции с таким же именем.
  2. SUPPORTS – Поддерживает текущую транзакцию, а так же выполняется вне транзакции, если на момент выполнения транзакция не была создана. Аналогичен с атрибутом в EJB транзакции с таким же именем.
  3. MANDATORY – Поддерживает текущую транзакцию, если на момент выполнения транзакция не была создана, выбрасывается исключение. Аналогичен с атрибутом в EJB транзакции с таким же именем.
  4. REQUIRES_NEWСоздает новую транзакцию, приостанавливает текущую транзакцию (если она существует). Аналогичен с атрибутом в EJB транзакции с таким же именем.
  5. NOT_SUPPORTED - Выполняется вне транзакции, приостанавливает текущую транзакцию (если она существует). Аналогичен с атрибутом в EJB транзакции с таким же именем.
  6. NEVER - Выполняется вне транзакции, выбрасывается исключение, если транзакция существует. Аналогичен с атрибутом в EJB транзакции с таким же именем.
  7. NESTEDВыполняется в пределах вложенной транзакции, если текущая транзакция существует. В EJB нет аналога даному атрибуту.

В следующих постах мы детально рассмотрим принципы работы вышеперечисленых видов транзакций в Spring.

To be continued….

Тэги: , ,

2 Responses to “Какими бывают транзакции в Spring?”

  1. jk |

    >>>Распространение транзакций
    очень калично звучит

  2. Evgenij Nerush |

    Согласен, исправил, спасибо

Оставить сообщение