Встречается на собеседованиях • сегодня
Какие знаешь проблемы работы с 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`.

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