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

Как решал проблему ленивой загрузки в 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; // Загрузится только при обращении } ```
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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