PHPackages                             sbooker/doctrine-transaction-handler - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Database &amp; ORM](/categories/database)
4. /
5. sbooker/doctrine-transaction-handler

ActiveLibrary[Database &amp; ORM](/categories/database)

sbooker/doctrine-transaction-handler
====================================

Doctrine transaction handler implementation for sbooker/transaction-manager

2.4.0(1w ago)05.2k12MITPHPPHP ^7.4 || ^8.0

Since Jun 3Pushed 8mo ago1 watchersCompare

[ Source](https://github.com/sbooker/doctrine-transaction-handler)[ Packagist](https://packagist.org/packages/sbooker/doctrine-transaction-handler)[ RSS](/packages/sbooker-doctrine-transaction-handler/feed)WikiDiscussions master Synced today

READMEChangelogDependencies (4)Versions (14)Used By (2)

[Read in English](README.EN.md)

Doctrine Transaction Handler (`sbooker/doctrine-transaction-handler`)
=====================================================================

[](#doctrine-transaction-handler-sbookerdoctrine-transaction-handler)

[![Latest Version](https://camo.githubusercontent.com/3b1313632b1f245c5f1e1dd46a14459a4435a02c1c410107fef057aa2d79d1a0/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f73626f6f6b65722f646f637472696e652d7472616e73616374696f6e2d68616e646c65722e7376673f7374796c653d666c61742d737175617265)](https://img.shields.io/packagist/v/sbooker/doctrine-transaction-handler)[![Software License](https://camo.githubusercontent.com/55c0218c8f8009f06ad4ddae837ddd05301481fcf0dff8e0ed9dadda8780713e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d627269676874677265656e2e7376673f7374796c653d666c61742d737175617265)](https://github.com/sbooker/doctrine-transaction-handler/blob/master/LICENSE)[![PHP Version](https://camo.githubusercontent.com/262e561ea8a86152ea0f9f075eb864f8a9cf4a714573d1a80404d6a2f440894a/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f73626f6f6b65722f646f637472696e652d7472616e73616374696f6e2d68616e646c65722e7376673f7374796c653d666c61742d737175617265)](https://php.net)[![Total Downloads](https://camo.githubusercontent.com/2359f952c68d2550d05b6ce6be7be2d83280908a2ecaa4d966dacf042dc943bd/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f73626f6f6b65722f646f637472696e652d7472616e73616374696f6e2d68616e646c65722e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/sbooker/doctrine-transaction-handler)

Готовая реализация `TransactionHandler` для интеграции [sbooker/transaction-manager](https://github.com/sbooker/transaction-manager) с Doctrine ORM.

Назначение библиотеки
---------------------

[](#назначение-библиотеки)

Эта библиотека — "мост" между абстрактным менеджером транзакций и Doctrine ORM. Она избавляет вас от необходимости писать собственный адаптер.

Так же библиотека решает фундаментальную проблему **управления памятью и состоянием в долгоживущих процессах** (воркерах, консьюмерах), которые являются одним из сценариев использования `transaction-manager`.

Ключевые особенности
--------------------

[](#ключевые-особенности)

- **Автоматическое управление памятью и состоянием:** После каждого успешного коммита обработчик вызывает `EntityManager::clear()`. Это **критически важно** для долгоживущих процессов и обеспечивает:
    - **Предотвращение утечек памяти:** Unit of Work не разрастается бесконечно.
    - **Гарантию свежести данных:** На каждой новой итерации сущности будут загружены из БД заново.
    - **Изоляцию операций:** Состояние предыдущей транзакции не влияет на следующую.
- **Готовое решение:** Просто установите и используйте.
- **Пессимистичная блокировка:** Гарантирует целостность данных при одновременном доступе "из коробки" (`LockMode::PESSIMISTIC_WRITE`).
- **Правильная обработка исключений:** Корректно преобразует `UniqueConstraintViolationException` в `UniqueConstraintViolation` из `transaction-manager`.

Установка
---------

[](#установка)

```
composer require sbooker/doctrine-transaction-handler
```

**Зависимости:**

- `sbooker/transaction-manager`
- `doctrine/orm`

Использование
-------------

[](#использование)

Использование библиотеки сводится к одному шагу — созданию экземпляра `DoctrineTransactionHandler` и передаче его в `TransactionManager`.

```
// bootstrap.php или ваш DI-контейнер

use Doctrine\ORM\EntityManagerInterface;
use Sbooker\TransactionManager\TransactionManager;
use Sbooker\TransactionManager\DoctrineTransactionHandler;

/** @var EntityManagerInterface $entityManager */

// 1. Создаем обработчик, передав в него EntityManager
$transactionHandler = new DoctrineTransactionHandler($entityManager);

// 2. Создаем менеджер транзакций
$transactionManager = new TransactionManager($transactionHandler);

// 3. Готово! Теперь используйте $transactionManager в вашем прикладном коде
$transactionManager->transactional(function () {
    // ... ваш код ...
});
// После успешного выполнения этого блока, $entityManager->clear() будет вызван автоматически.
```

После этой простой настройки вы можете полноценно использовать `TransactionManager` во всем приложении, как описано в его [документации](https://github.com/sbooker/transaction-manager).

License
-------

[](#license)

See [LICENSE](https://github.com/sbooker/doctrine-transaction-handler/blob/master/LICENSE) file.

###  Health Score

47

↑

FairBetter than 93% of packages

Maintenance76

Regular maintenance activity

Popularity21

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity67

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~215 days

Recently: every ~399 days

Total

11

Last Release

9d ago

Major Versions

0.9.0 → 1.0.12021-01-09

1.0.1 → 2.0.02021-08-29

2.2.0 → 3.x-dev2022-08-28

PHP version history (3 changes)1.0.0PHP ^7.4

0.9.0PHP ^7.1

1.0.1PHP ^7.4 || ^8.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/f97b1f6ea03776dda6e0ec26d1ff3a3309972d65bd1376eb111c2b35017af339?d=identicon)[sbooker](/maintainers/sbooker)

---

Top Contributors

[![sbooker](https://avatars.githubusercontent.com/u/3658174?v=4)](https://github.com/sbooker "sbooker (8 commits)")

### Embed Badge

![Health badge](/badges/sbooker-doctrine-transaction-handler/health.svg)

```
[![Health](https://phpackages.com/badges/sbooker-doctrine-transaction-handler/health.svg)](https://phpackages.com/packages/sbooker-doctrine-transaction-handler)
```

###  Alternatives

[scienta/doctrine-json-functions

A set of extensions to Doctrine that add support for json query functions.

58523.9M35](/packages/scienta-doctrine-json-functions)[damienharper/auditor-bundle

Integrate auditor library in your Symfony projects.

4542.8M](/packages/damienharper-auditor-bundle)[sonata-project/entity-audit-bundle

Audit for Doctrine Entities

644989.8k1](/packages/sonata-project-entity-audit-bundle)[pixelfederation/doctrine-resettable-em-bundle

Symfony bundle for decorating default entity managers using a resettable decorator.

20113.5k](/packages/pixelfederation-doctrine-resettable-em-bundle)[rcsofttech/audit-trail-bundle

Enterprise-grade, high-performance Symfony audit trail bundle. Automatically track Doctrine entity changes with split-phase architecture, multiple transports (HTTP, Queue, Doctrine), and sensitive data masking.

1022.4k](/packages/rcsofttech-audit-trail-bundle)[ahmed-bhs/doctrine-doctor

Runtime analysis tool for Doctrine ORM integrated into Symfony Web Profiler. Unlike static linters, it analyzes actual query execution at runtime to detect performance bottlenecks, security vulnerabilities, and best practice violations during development with real execution context and data.

813.1k](/packages/ahmed-bhs-doctrine-doctor)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
