Как стать автором
Обновить

Комментарии 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. Так что пока ничего нового не узнал. Но вот описание про следующую статью выглядит интересным. Буду ждать.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории