В чем принципиальные отличия Spring Cache и Hibernate Cache?

189
27 марта 2022, 12:00

Помогите понять - в чем принципиальные отличия Spring Cache и Hibernate Cache? Помимо возможностей включения 2-го и 3-го уровней в Hibernate.

К примеру - в своем текущем приложении на Spring Boot вставил аннотацию @EnableCache, плюс поставил аннотацию @Cacheable над методами сервиса, результаты которых подлежат кешированию. Но не совсем пойму - хранится ли кэш этих двух фреймворков в разных местах; и т.д.

Answer 1

Spring Cache и Hibernate cache это просто разные абстракции для реализации кеширования.

  • Spring Cache

Используется "внутри" программ для кеширования результатов вызова различных методов. Например здесь реализовано кеширование возвращаемого результата адреса для заданных значений Customer :

@CacheConfig(cacheNames={"addresses"})
public class CustomerDataService {
    @Cacheable
    public String getAddress(Customer customer) {...}
  • Hibernate Cache

Это другая абстракция для реализации кеширования при обращении к БД. По умолчанию Хибернейт имеет сессионный Кеш (когда в рамках одной сессии хранятся результаты вызова запросов). Это реализовано внутренними средствами Хибернейта.

Но у него также есть возможность включить 2й уровень кеширования для сохранения возвращаемого результата из БД (для ускорения работы приложения).

Оба эти механизма предоставляют только абстракцию, а вот имплементация кеширования реализуется в других проектах, например:

  • JCacheCacheManager
  • EhCacheCacheManager
  • CaffeineCacheManager

В Spring Cache также есть простые имплементации для реализации кеширования:

  • SimpleCacheManager
  • ConcurrentMapCacheManager

Но не совсем пойму - хранится ли кэш этих двух фреймворков в разных местах; и т.д

Можно для всего приложения поставить одну общую имплементацию для всех Кешей и один общий Кеш менеджер. Но физически Спринг Кеш и Кеш для Хибернейта будет лежать в разных объектах.

READ ALSO
Как сделать простой Random 1-5 в textView на экран

Как сделать простой Random 1-5 в textView на экран

Как сделать простой Random (выпадающие одно число от 1 до 5 )

217
Авторизация через Яндекс при помощи Spring

Авторизация через Яндекс при помощи Spring

Я делаю приложение на фреймворке SpringХочу сделать авторизацию через Яндекс

104
Что такое атомарность в java? [дубликат]

Что такое атомарность в java? [дубликат]

Понимаю, что такое атомарные операции - это неделимые операции, которые могут использоваться в многопоточном режиме без синхронизации

148
С чего начать изучение Spring?

С чего начать изучение Spring?

Уже несколько месяцев изучаю JavaВыучил основы языка, Core, коллекции, дженерики

124