Какова наилучшая стратегия запросов и конфигурация сущностей при использовании кэша второго уровня - PullRequest
0 голосов
/ 22 октября 2019

Какова лучшая стратегия запросов и лучшая конфигурация для моих сущностей, когда активирован кэш второго уровня.

Например, у меня есть две сущности Пользователь и Группа с этими отношениями:

Группа «Один пользователь - множество»: группы, принадлежащие пользователю. Здесь собрана группа Group в классе User и атрибут User (владелец) в классе Group.

Много пользователей в много групп с атрибутами (статус, дата и т. Д.): Члены групп. Из-за атрибутов дополнений существует специальный класс для сопоставления промежуточной таблицы, называемый UserGroup. Существует коллекция OneToMany группы UserGroup в классе User, а другая - в классе Group.

Соответствующие атрибуты или коллекции настроены для извлечения в режиме Lazy. Все классы и коллекции сущностей кэшируются.

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

select g from Group g left join fetch UserGroup ug left join fetch ug.user u where g.group.owner = :idOwner

Теперь сКэш второго уровня, который работает как хранилище значений ключей, разве не проще и эффективнее получить пользователя по его идентификатору, а затем позволить hibernate восстановить группы и участников в режиме Lazy, чтобы, наконец, сохранить данные в кэше второго уровня? Следующий запрос будет использовать кеш, так в чем же преимущество использования объединения? Также мне не нужно настраивать оптимизированные запросы для кэширования.

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...