Мне трудно понять, когда спящий режим попадает в кеш второго уровня и когда он делает недействительным кеш.
Вот что я сейчас понимаю:
- ] Кэш второго уровня хранит объекты между сеансами, область действия - SessionFactory
- Вы должны указать, какие объекты следует кэшировать, по умолчанию никакие объекты не будут кэшироваться
- Кэш запросов сохраняет результаты запросов в кеше.
Что я не понимаю
- Когда спящий режим попадает в этот кеш?
- Допустим, я установил кеш второго уровня, но не кеширование запросов. Я хочу кэшировать своих клиентов, их 50000. Как я могу получить клиентов из кеша?
- Полагаю, я могу получить их по идентификатору из кеша. Это было бы легко, но кешировать не стоит. Но что, если я хочу провести какие-то расчеты со всеми своими клиентами. Допустим, я хочу показать список клиентов, тогда как мне получить к ним доступ?
- Как мне получить всех своих клиентов, если кеширование запросов отключено?
- Что произойдет, если кто-то обновит одного из клиентов?
- Будет ли этот клиент признан недействительным в кэше или все клиенты станут недействительными?
Или я совершенно неправильно считаю кеширование? Что было бы более подходящим использованием кеша второго уровня в этом случае? В документации по гибернации вообще не понятно, как кеш работает на самом деле. Есть только инструкции по настройке.
Обновление:
Итак, я понял, что кеш второго уровня (без кеша запросов) был бы хорош для загрузки данных по идентификатору. Например, у меня есть пользовательский объект, разрешения на который я хочу проверять в каждом запросе в веб-приложении. Будет ли это хорошим случаем для уменьшения доступа к базе данных путем кэширования пользователя в кеш второго уровня? Как будто я сохраняю идентификатор пользователя в сеансе или где угодно, и когда мне нужно проверить разрешения, я загружаю пользователя по его идентификатору и проверяю разрешения.
задан Basit Anwer 17 December 2015 в 09:34
поделиться