Встречается на собеседованиях • сегодня
Какие знаешь сложности при работе с кэшированием в Hibernate
Основные сложности с кэшированием в Hibernate:
1. **Синхронизация данных** - при изменении данных в БД минуя Hibernate кэш становится неактуальным. Решение - настроить время жизни кэша или использовать инвалидацию.
2. **Проблемы с коллекциями** - при кэшировании ассоциаций (@OneToMany) могут возникать LazyInitializationException. Нужно правильно настраивать FetchType и использовать JOIN FETCH в запросах.
3. **Конкурентный доступ** - в кластерных решениях требуется синхронизация кэшей между узлами. Используется Infinispan или Hazelcast.
4. **Утечки памяти** - при большом объеме данных в кэше 1-го уровня (Session). Решение - своевременно закрывать сессии.
Пример проблемы N+1 без кэша:
```java
@Entity
class User {
@OneToMany(fetch = FetchType.LAZY)
List orders;
}
// Будет N+1 запросов при итерации
users.forEach(u -> u.getOrders().size());
```
Решение - включить 2-й уровень кэша и настроить @Cacheable на сущности.

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