Встречается на собеседованиях • сегодня
Как решал проблему ленивой загрузки в Hibernate
Hibernate поддерживает ленивую загрузку через прокси-объекты и коллекции. По умолчанию `@ManyToOne`, `@OneToOne` загружаются eagerly, а `@OneToMany`, `@ManyToMany` — lazy.
**Проблемы и решения:**
1. **LazyInitializationException** — возникает при попытке загрузить ленивые данные вне сессии. Решения:
- Использовать `FetchType.EAGER` (не всегда оптимально)
- Открыть сессию через `Hibernate.initialize(proxy)`
- Использовать `JOIN FETCH` в HQL:
```java
"FROM Order o JOIN FETCH o.items WHERE o.id = :id"
```
- Применить `@EntityGraph`
2. **N+1 проблема** — решается через:
- `@BatchSize` для коллекций
- `FetchMode.SUBSELECT`
- Критерии с `FetchMode.JOIN`
Пример с `FetchType.LAZY`:
```java
@Entity
public class Order {
@OneToMany(fetch = FetchType.LAZY)
private List- items; // Загрузится только при обращении
}
```

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