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

Какие знаешь способы получения безошибочного доступа к ассоциации сущности

В JPA/Hibernate есть несколько способов безопасного доступа к ассоциациям:

  1. Eager Loading - загружает ассоциации сразу:
java
@ManyToOne(fetch = FetchType.EAGER)
private Author author;
  1. Lazy Loading + Hibernate.initialize():
java
@ManyToOne(fetch = FetchType.LAZY)
private Author author;

// Позже в сервисе
Hibernate.initialize(book.getAuthor());

text

3. **Entity Graphs** - определяет, что загружать в конкретном запросе:
```java
@EntityGraph(attributePaths = {"author"})
Book findWithAuthorById(Long id);
  1. JOIN FETCH в JPQL:
java
@Query("SELECT b FROM Book b JOIN FETCH b.author WHERE b.id = :id")
Book findByIdWithAuthor(@Param("id") Long id);
  1. @NamedEntityGraph - предопределенные графы загрузки.

Важно: избегайте N+1 проблемы, используя правильную стратегию загрузки. Для транзакционных методов лучше использовать JOIN FETCH или Entity Graphs, для не-транзакционных - EAGER или инициализацию.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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