Преждевременная оптимизация является первопричиной всех бед в программировании. Дональд Кнут
Какими бывают транзакции в Spring?
Заметьте, данный пост не является справочником по работе с транзакциями в Spring, а лишь описывает способы распространения транзакций.
Пожалуйста, будьте ознакомлены с разницей между физическими и логическими транзакциями.
В посте рассматривается версия Spring 2.5.4
Транзакции в Spring могут принимать следующие значения:
- REQUIRED – Является значением по умолчанию. Поддерживает текущую транзакцию, создает новую если транзакция ещё не существует. Аналогичен с атрибутом в EJB транзакции с таким же именем.
- SUPPORTS – Поддерживает текущую транзакцию, а так же выполняется вне транзакции, если на момент выполнения транзакция не была создана. Аналогичен с атрибутом в EJB транзакции с таким же именем.
- MANDATORY – Поддерживает текущую транзакцию, если на момент выполнения транзакция не была создана, выбрасывается исключение. Аналогичен с атрибутом в EJB транзакции с таким же именем.
- REQUIRES_NEW – Создает новую транзакцию, приостанавливает текущую транзакцию (если она существует). Аналогичен с атрибутом в EJB транзакции с таким же именем.
- NOT_SUPPORTED - Выполняется вне транзакции, приостанавливает текущую транзакцию (если она существует). Аналогичен с атрибутом в EJB транзакции с таким же именем.
- NEVER - Выполняется вне транзакции, выбрасывается исключение, если транзакция существует. Аналогичен с атрибутом в EJB транзакции с таким же именем.
- NESTED – Выполняется в пределах вложенной транзакции, если текущая транзакция существует. В EJB нет аналога даному атрибуту.
В следующих постах мы детально рассмотрим принципы работы вышеперечисленых видов транзакций в Spring.
To be continued….
Тэги: Propagation, Spring, Transaction


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