Встречается на собеседованиях • сегодня
Как работает кэширование в Hibernate
Hibernate использует многоуровневый кэш для повышения производительности:
1. **Кэш первого уровня (Session cache)**
Привязан к сессии, включен по умолчанию. Хранит объекты в пределах одной транзакции.
```java
Session session = sessionFactory.openSession();
User user1 = session.get(User.class, 1L); // Запрос в БД
User user2 = session.get(User.class, 1L); // Берется из кэша
```
2. **Кэш второго уровня (Second-level cache)**
Общий для всех сессий, требует настройки (Ehcache, Infinispan). Кэширует данные между транзакциями.
```xml
```
3. **Кэш запросов (Query cache)**
Кэширует результаты запросов (HQL, Criteria). Требует отдельной настройки:
```java
Query query = session.createQuery("from User where active = true")
.setCacheable(true);
```
Важно: кэш второго уровня и кэш запросов требуют явного указания аннотации `@Cacheable` на entity.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы