Результат кэширования для объектов doctrine2, доступных только для чтения, с помощью symfony2

#caching #doctrine-orm #symfony

#кэширование #doctrine-orm #symfony

Вопрос:

примечание: извините за мой плохой английский, я француз, но я постараюсь быть максимально понятным.

Я вхожу в Doctrine2 с помощью Symfony2. Просто создаю небольшую игру для развлечения, чтобы изучать новые вещи и тестировать эти новые потрясающие инструменты. Вот моя сделка: я хочу сохранить конфигурацию моей игры в базе данных (например, предметы, информацию о гонках и т. Д.), Чтобы воспользоваться удобным синтаксисом объектов :

 $user->getRace()->getName();
  

Дело в том, что информация о «расе» или «Элементе» вряд ли изменится. Я обнаружил аннотацию объекта @ReadOnly, которая сообщает Doctrine не проверять обновления в этих объектах после первой вставки.
Мне интересно, знаете ли вы способ «прозрачно» (я имею в виду, что doctrine делает это за меня) кэшировать эти результаты, чтобы предотвратить бесполезные объединения при каждом получении моей пользовательской информации.

Ответ №1:

Единственное, что делает аннотация @ReadOnly, это сообщает Doctrine не обновлять объект при сбросе. Событие, если оно было изменено, не обновляется.

Так что это имеет мало общего с запросами.

Если вы хотите кэшировать объекты Race или Item, вам следует использовать кэш результатов. Это позволяет вам кэшировать результат любого запроса.

Чтобы упростить его использование (и многократное использование), вы можете реализовать пользовательскую аннотацию, которая заставит этот запрос для объекта, на который ссылается ссылка, автоматически использовать кэш результатов.

Комментарии:

1. Хорошо, большое вам спасибо за вашу помощь. Для этого я представлю улучшение Doctrine2 tracker, и пока я попытаюсь реализовать аннотацию самостоятельно.