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

Какие знаешь проблемы работы с JPA

1. **N+1 проблема**: При ленивой загрузке связанных сущностей может возникать множество запросов. Решается `JOIN FETCH` или `@EntityGraph`. ```java @Query("SELECT e FROM Employee e JOIN FETCH e.department") List findAllWithDepartment(); ``` 2. **Кеширование**: JPA кеширует сущности, что может привести к устаревшим данным. Решение - явное управление кешем через `EntityManager.clear()`. 3. **Производительность batch-операций**: Массовые вставки/обновления через `saveAll()` неэффективны. Лучше использовать `EntityManager.getTransaction()` и `flush()/clear()`. 4. **Ограничения наследования**: Стратегии наследования (`SINGLE_TABLE`, `JOINED`) могут создавать сложные запросы и проблемы с производительностью. 5. **Отсутствие DTO проекций**: Работа с сущностями вместо DTO может нагружать память. Решение - использовать интерфейсные проекции или `@Query` с явным маппингом. 6. **Проблемы с ленивой загрузкой вне транзакции**: `LazyInitializationException` при обращении к ленивым полям после закрытия сессии. Решение - `@Transactional` или `OpenSessionInView`.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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