Главная » Spring » Знакомство с поддержкой транзакций в Spring

0

Фреймворк Spring, как и EJB, предоставляет поддержку про- граммного и декларативного управления транзакциями. Но возмож- ности Spring в этом отношении намного шире, чем возможности EJB. Поддержка программного управления транзакциями в Spring су- щественно отличается от аналогичной ей поддержки в EJB. В от- личие от EJB, где используется реализация Java Transaction API (JTA), фреймворк Spring использует механизм обратных вызовов, изолирующий фактическую реализацию транзакций от программ- ного кода, использующего ее. В действительности поддержка управ- ления транзакциями в Spring даже не требует наличия реализации JTA. Если приложение использует только одно хранилище данных, Spring может использовать поддержку транзакций, предлагаемую самим механизмом хранения. В число поддерживаемых механиз- мов входят JDBC, Hibernate и Java Persistence API (JPA). Но если требования к транзакциям в приложении распространяются на не- сколько хранилищ, Spring может предложить поддержку распреде- ленных транзакций на основе сторонней реализации JTA. Подробнее поддержка программного управления транзакциями будет рассмат-

риваться в разделе 7.3.

Программное управление транзакциями обеспечивает высочай- шую гибкость и точность в определении границ транзакций, тог- да как декларативное управление транзакциями (основанное на Spring AOP) помогает изолировать операции от правил применения транзакций. Поддержка декларативного управления транзакциями в Spring напоминает поддержку в EJB транзакций, управляемых контейнером (container-managed transactions, CMT). И та, и дру- гая позволяют определять границы транзакций декларативно. Но

в Spring декларативное управление транзакциями предоставляет более широкие возможности, чем CMT, позволяя объявлять допол- нительные атрибуты, например определяющие уровень изоляции и пределы времени ожидания. Поддержка декларативного управления транзакциями в Spring будет рассматриваться в разделе 7.4.

Выбор между программным и декларативным управлением транз- акциями в значительной степени определяется выбором между точ- ностью управления и удобством использования. При программном управлении транзакциями приложение получает возможность точно определять границы транзакций, устанавливая начало и конец об- ласти действия транзакций. Обычно высокая точность определения границ транзакций не требуется, и поэтому чаще предпочтение от- дается объявлению транзакций в файле определения контекста.

Независимо от выбранного способа управления транзакциями, программного или декларативного, в приложениях необходимо бу- дет использовать диспетчер транзакций Spring, обеспечивающий интерфейс к конкретным реализациям транзакций. Посмотрим, насколько диспетчеры транзакций в Spring способны освободить программиста от необходимости взаимодействовать с конкретными реализациями транзакций.

Источник:   Уоллс К., Spring в действии. – М.: ДМК Пресс, 2013. – 752 с.: ил.

По теме:

  • Комментарии