Поскольку в вашем вопросе неясно, какой тип кэша вы используете?JPA использует первый уровень кэширования - это контекст постоянства.Entity Manager гарантирует, что в пределах одного Постоянного контекста для любой конкретной строки базы данных будет только один экземпляр объекта.Однако этим же объектом можно управлять в транзакции другого пользователя, поэтому вам следует использовать либо оптимистическую, либо пессимистическую блокировку.
Если вы имеете в виду кэш 2-го уровня, этот уровень кэш-памяти возник из-за соображений производительности.между Entity Manager и базой данных.Контекст постоянства разделяет кэш, делая кэш второго уровня доступным во всем приложении.Трафик базы данных значительно сокращается, поскольку объекты загружаются в общий кэш и становятся доступными оттуда.Так что на самом деле вам не нужно беспокоиться о перезагрузке данных из базы данных, если произойдет пропадание кеша.
Теперь, если вы реализуете свою собственную логику для реализации кеша, вам нужно больше исследовать, как на самом деле работает кеширование.и различные алгоритмы кеширования, такие как LRU, MRU и т. д. (которые я лично не рекомендовал бы, поскольку вы можете использовать существующие доступные провайдеры, такие как ehcache, redis, hazelcast, всего несколько имен для кеширования 2-го уровня)