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

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


limb3_2007_3:ru:packages:dbal:transactions

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

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

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

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

Например:

  $connection = lmbToolkit :: instance()->getDefaultDbConnection();

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

В пакете 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_2007_3/ru/packages/dbal/transactions.txt · Последнее изменение: 2010/11/10 10:02 — 127.0.0.1