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

Какие знаешь способы решения проблемы N+1 в Hibernate

Использование `JOIN FETCH` в JPQL/HQL: ```java @EntityGraph(attributePaths = "orders") @Query("SELECT c FROM Customer c JOIN FETCH c.orders WHERE c.id = :id") Customer findByIdWithOrders(@Param("id") Long id); ``` Применение `@EntityGraph`: ```java @Entity @NamedEntityGraph(name = "Customer.orders", attributeNodes = @NamedAttributeNode("orders")) public class Customer { ... } // Использование @EntityGraph("Customer.orders") Customer findById(Long id); ``` Настройка `FetchType.EAGER` (менее гибкий способ): ```java @OneToMany(fetch = FetchType.EAGER) private List orders; ``` Пакетная загрузка (Batch fetching) в `application.properties`: ``` spring.jpa.properties.hibernate.default_batch_fetch_size=20 ``` Для всех способов важно учитывать: - JOIN FETCH может привести к Cartesian Product - EAGER загрузка может вызвать лишние запросы - @EntityGraph более гибкий, чем EAGER - Batch fetching оптимизирует множественные lazy-загрузки
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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