Встречается на собеседованиях • сегодня
Как реализована ленивость коллекций в Hibernate
Ленивая загрузка (lazy loading) в Hibernate реализуется через прокси-объекты или байткод-генерацию. По умолчанию для `@OneToMany` и `@ManyToMany` используется `FetchType.LAZY`, а для `@ManyToOne` и `@OneToOne` — `FetchType.EAGER`.
Пример с ленивой коллекцией:
```java
@Entity
public class Parent {
@OneToMany(mappedBy = "parent", fetch = FetchType.LAZY)
private List children = new ArrayList<>();
// getters/setters
}
```
При обращении к `parent.getChildren()` без активной сессии Hibernate выбросит `LazyInitializationException`. Чтобы избежать этого, можно:
1. Использовать `Hibernate.initialize(parent.getChildren())` в рамках сессии
2. Настроить фильтр `OpenSessionInViewFilter`
3. Использовать `JOIN FETCH` в запросе: `from Parent p join fetch p.children`

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