Какими бывают транзакции в 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….

Первое дыхание Spring Framework 3.0 milestone

В предверии нового года SpringSource анонсировала Spring Framework 3.0 milestone. Главной фичей релиза стала поддержка REST. Более детальную информацию о релизе можно получить на официальном тим блоге проекта.

Инициализация “static property” в “Spring application context configuration”

В проекте, над которым я работаю в данный момент, возникла необходимость инициализации статических свойств (в моем случае это Axis – org.apache.axis.AxisProperties) при формировании спрингового контекста. Закатав рукава с криками “Да это как два байта переслать” сразу же возник следующий вопрос: “Как в Spring application context configuration статическому методу передать параметры ?” (more…)