====== Поддержка транзакций ====== ===== Явный старт и завершение транзакции ===== Интерфейс lmbDbConnection, который реализуют все классы-подключения к базе данных, содержит методы для управления транзакциями: * **beginTransaction()** - начинает транзакцию * **commitTransaction()** - подтверждает и завершает транзакцию * **rollbackTransaction()** - откатывает назад изменения в рамках текущей транзации Например: lmbToolkit :: instance()->getDefaultDbConnection()->beginTransaction(); ===== Автоматический старт и завершение транзакции ===== В пакете DBAL есть специальный класс **lmbAutoTransactionConnection**, который является декоратором на connection и который автоматически стартует транзакцию в случае выполнения любого запроса на изменение базы данных. Для того, чтобы lmbAutoTransactionConnection работал необходимо встроить специальный фильтр [[lmbAutoDbTransactionFilter|lmbAutoDbTransactionFilter]] в свою цепочку фильтров приложения, например: 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')); } } ?>