Комментарии 9
Эта часть гораздо лучше предыдущей, и по стилю, и по структуре, и по информативности.
Я бы только разделил её на две. "Немного о Unit of Work и EntityManager" вылилось в полноценное руководство по Доктрине. Эту часть я бы выделил в отдельную статью, на которую просто можно поставить ссылку. Так, во-первых, можно будет сразу перейти к заявленной теме — оптимизации, а во-вторых, статья станет не такой перегруженной.
Я бы предложил вам немного конкретизировать связку EntityManager
и UnitOfWork
в Doctrine.
Сейчас ваш текст читается так, что именно сам EntityManager
реализует паттерны проектирования Unit of Work и Identity Map, но это не так, за это отвечает UnitOfWork
.
Из-за этого дальше по тексту статьи местами возникает путаница при упоминаниях "UnitOfWork" и "Unit of Work".
Также я согласен с предложением @FanatPHP выделить общую информацию по Doctrine в отдельную статью, будет лучше.
Спасибо за статью и не слушай критиков. Симфонисты вообще любят умничать и не любят объяснять простыми словами. Хочу больше статей о внутренностях Doctrine и Symfony.
Вывод очень простой - читайте документацию полностью. Вся эта здоровенная статья высосана из малюсенькой части доки, там ещё и про итератор есть https://www.doctrine-project.org/projects/doctrine-orm/en/2.14/reference/batch-processing.html
Флаш можно использовать лишь один. В современной разработке используются команд бас и к нему в мидлеварях цепляется автоматический флаш и транзакции. https://symfony.com/doc/current/messenger.html#other-middlewares
С методом clear надо быть аккауратным - он чистит весь идентити мэп. Соответственно ранее вытащенные или сохранённые объекты не будут в ИМ и используя их в связях и других кейсах вы будете получать неожиданное поведение при попытке зафлашиться.
Так же при работе через методы update, delete или напрямую с квери билдером надо понимать, что состояние так же не синхронизируется с ентити менеджером.
В доке по доктрине почти под каждым абзацам желтые предупрежения о всяких косяках и неявном на первый взгляд поведении.
Ждем более подробную статью!
Речь о том что статьи не нужны, достаточно прочитать документацию. Там гораздо больше информации, чем в таких урывочных статьях.
Интересная статья. Методом проб и ошибок пришли к тому же варианту использования с bulk insert. Так что пока ничего нового не узнал. Но вот описание про следующую статью выглядит интересным. Буду ждать.
Оптимизация бэкенда приложения с примерами на Symfony. Часть 2