Встречается на собеседованиях • сегодня

Что такое кэширование в Hibernate

Hibernate использует кэширование для повышения производительности, уменьшая количество запросов к БД. Существует два уровня кэширования:

  1. Кэш первого уровня (L1) - привязан к сессии. Включен по умолчанию. Хранит объекты только в рамках текущей сессии.
java
Session session = sessionFactory.openSession();
User user1 = session.get(User.class, 1L); // Запрос к БД
User user2 = session.get(User.class, 1L); // Берется из кэша L1
  1. Кэш второго уровня (L2) - общий для всех сессий. Требует настройки (Ehcache, Infinispan и др.). Нужно аннотировать сущность:
java
@Entity
@Cacheable
@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class User { ... }

Также есть кэш запросов для результатов HQL/Criteria запросов. Для работы требуется:

  • Включить в конфигурации
  • Указать @Cacheable для запроса

Кэширование особенно полезно для часто читаемых, редко изменяемых данных.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы