Когда и как использовать кеш второго уровня гибернации?

Мне трудно понять, когда спящий режим попадает в кеш второго уровня и когда он делает недействительным кеш.

Вот что я сейчас понимаю:

  • ] Кэш второго уровня хранит объекты между сеансами, область действия - SessionFactory
  • Вы должны указать, какие объекты следует кэшировать, по умолчанию никакие объекты не будут кэшироваться
  • Кэш запросов сохраняет результаты запросов в кеше.

Что я не понимаю

  • Когда спящий режим попадает в этот кеш?
  • Допустим, я установил кеш второго уровня, но не кеширование запросов. Я хочу кэшировать своих клиентов, их 50000. Как я могу получить клиентов из кеша?
  • Полагаю, я могу получить их по идентификатору из кеша. Это было бы легко, но кешировать не стоит. Но что, если я хочу провести какие-то расчеты со всеми своими клиентами. Допустим, я хочу показать список клиентов, тогда как мне получить к ним доступ?
  • Как мне получить всех своих клиентов, если кеширование запросов отключено?
  • Что произойдет, если кто-то обновит одного из клиентов?
    • Будет ли этот клиент признан недействительным в кэше или все клиенты станут недействительными?

Или я совершенно неправильно считаю кеширование? Что было бы более подходящим использованием кеша второго уровня в этом случае? В документации по гибернации вообще не понятно, как кеш работает на самом деле. Есть только инструкции по настройке.

Обновление: Итак, я понял, что кеш второго уровня (без кеша запросов) был бы хорош для загрузки данных по идентификатору. Например, у меня есть пользовательский объект, разрешения на который я хочу проверять в каждом запросе в веб-приложении. Будет ли это хорошим случаем для уменьшения доступа к базе данных путем кэширования пользователя в кеш второго уровня? Как будто я сохраняю идентификатор пользователя в сеансе или где угодно, и когда мне нужно проверить разрешения, я загружаю пользователя по его идентификатору и проверяю разрешения.

85
задан Basit Anwer 17 December 2015 в 09:34
поделиться