Вышла новая версия Doctrine DBAL 3.2.0
Вышла очередная минорная версия Doctrine DBAL 3.2.0.
Она фокусируется на новых функциях, улучшениях и устаревании старых API.
Так же сделан очередной шаг к стандартизации.
Ниже приведены некоторые изменения новой версии Doctrine DBAL 3.2.0.
Полный список изменения можно посмотреть тут.
Сравнение схемы с учетом платформы
Раньше при генерации кода схемы не учитывались нюансы используемой платформы и всегда создавался один и тот же универсальный код.
// old schema
$column1 = new Column('settings', Type::getType('json'));
// new schema
$column2 = new Column('settings', Type::getType('json'), ['length' => 16777215]);
К примеру выше указанные примеры раньше не давали никакой разницы и всегда генерилось бы поле типа TEXT.
Теперь же ограничение по длине позволит указать тип поля MEDIUMTEXT если ваша платформа это поддерживает.
Поддержка psr/cache
Библиотека Doctrine Cache закрывается. С этой версии появляется возможность использовать совместимую с PSR-6 реализацию кеширования результатов.
Рекомендуется всем перейти на новую реализацию через psr/cache.
Поддержка psr/log
Интерфейс SQLLogger был давно разработан и уже устарел. Он не предоставляет всей гибкости необходимой при логировании собыйтий на разных уровнях.
В новой версии добавлена возможность делигировать логирование в систему совместимую с PSR-3.
Всегда кэшировать полный результат
До этой версии результат кешировался только после полного извлечения всех наборов запрашиваемых данных. Это приводилоо к некоторым проблемам.
Теперь результаты запросов кешируются сразу, как только будут получены из БД.
Это значительно упрощает уровень кэширования и делает его поведение более простым.
События для транзакций
В новой версии DBAL представлены еще три события, связанные с транзакциями:
- onTransactionBegin
- onTransactionCommit
- onTransactionRollBack
Ссылка на источник: https://www.doctrine-project.org/2021/11/26/dbal-3.2.0.html