Инструменты пользователя

Инструменты сайта


limb3:ru:packages:dbal:transactions

Поддержка транзакций

Явный старт и завершение транзакции

Интерфейс lmbDbConnection, который реализуют все классы-подключения к базе данных, содержит методы для управления транзакциями:

  • beginTransaction() - начинает транзакцию
  • commitTransaction() - подтверждает и завершает транзакцию
  • rollbackTransaction() - откатывает назад изменения в рамках текущей транзации

Например:

  lmbToolkit :: instance()->getDefaultDbConnection()->beginTransaction();

Автоматический старт и завершение транзакции

В пакете DBAL есть специальный класс lmbAutoTransactionConnection, который является декоратором на connection и который автоматически стартует транзакцию в случае выполнения любого запроса на изменение базы данных.

Для того, чтобы lmbAutoTransactionConnection работал необходимо встроить специальный фильтр lmbAutoDbTransactionFilter в свою цепочку фильтров приложения, например:

<?php
lmb_require('limb/filter_chain/src/lmbFilterChain.class.php');
lmb_require('limb/core/src/lmbHandle.class.php');
 
class MyApplication extends lmbFilterChain
{
  function __construct()
  {
    $this->registerFilter(new lmbHandle('limb/web_app/src/filter/lmbUncaughtExceptionHandlingFilter',
                                        array(dirname(__FILE__) . '/../www/500.html')));
 
    $this->registerFilter(new lmbHandle('limb/dbal/src/filter/lmbAutoDbTransactionFilter'));
 
    $this->registerFilter(new lmbHandle('limb/web_app/src/filter/lmbSessionStartupFilter'));
    $this->registerFilter(new lmbHandle('src/filter/rtRequestDispatchingFilter'));
    $this->registerFilter(new lmbHandle('limb/web_app/src/filter/lmbResponseTransactionFilter'));
    $this->registerFilter(new lmbHandle('limb/web_app/src/filter/lmbActionPerformingFilter'));
    $this->registerFilter(new lmbHandle('limb/web_app/src/filter/lmbViewRenderingFilter'));
  }
}
?>

Обсуждение

Ваш комментарий. Вики-синтаксис разрешён:
   ___    __  ___   _  __   ___    _  __
  / _ \  /  |/  /  | |/_/  / _ \  | |/_/
 / ___/ / /|_/ /  _>  <   / // / _>  <  
/_/    /_/  /_/  /_/|_|  /____/ /_/|_|
 
limb3/ru/packages/dbal/transactions.txt · Последние изменения: 2010/11/10 10:02 (внешнее изменение)