Я считаю, что разумное использование кеша 2-го уровня Hibernate улучшит производительность моего приложения, и для этого я начал изучать его из Интернета и из курса Hibernate. Хотя есть довольно хорошие объяснения по кешу 2-го уровня и в основном о том, как он работает, моя цель - точно выяснить, как все работает, начиная с конкретных вопросов, которые я не нашел, поэтому я задам несколько вопросов по кешу Hibernate в целом. и в частности кеш-память 2-го уровня.
Примечания к ответу:
A. Я был бы признателен за ответы на вопросы, даже если некоторые из них кажутся очевидными или несущественными.
B. Если вопрос зависит от поставщика кеша, я бы хотел услышать ответ, который рассказывает об Ehcache
C. Ответы на часть вопросов из-за неуверенности будет приветствоваться
Вопросы:
После настройки кеша 2-го уровня отключается ли кеш-память 1-го уровня? Если нет, то как происходит процесс событий при попытке получить объект, какой уровень кеша попадает первым?
Сохраняет ли кеш запроса текст запроса как HQL или как собственный SQL?
Будет ли кеш 2-го уровня работать одинаково с использованием Hibernate через JPA и Hibernate напрямую?
Я понял, что кеш запросов участвует с кешем 2-го уровня, попадая в кеш 2-го уровня с идентификаторами, которые находятся в кеше запросов. Что, если некоторые из идентификаторов по какой-то причине больше не находятся в кеше 2-го уровня, будут ли снова извлечены все объекты или только часть, которой не существует?
Что касается синхронизации - путем обновления сущности, которая хранится в кэше 2-го уровня, в определенной транзакции - Когда сущность будет обновлена в кеше 2-го уровня, если вообще? Будем признательны за дополнительную информацию о том, как это действие может повлиять как на кеш второго уровня, так и на кеш запросов.
Спасибо!