Добавить в корзинуПозвонить
Найти в Дзене
Java

🚫 Spring Boot: избегай FetchType.EAGER, если это не жизненно необходимо

Когда ты помечаешь связь как EAGER, ORM будет загружать её КАЖДЫЙ раз при загрузке сущности, даже если тебе эти данные вообще не нужны. Что это значит на практике: ❌ Ты загружаешь Order - автоматически тянется и Customer ❌ Даже если ты не обращаешься к customer в коде ❌ Растёт объём данных, время запроса и нагрузка на БД А дальше классика жанра — N+1 проблема: 1 запрос - получить список всех Orders + N запросов - получить Customer для каждого Order И всё, производительность улетела. EAGER кажется удобным, но это скрытая ловушка. Гораздо безопаснее по умолчанию использовать LAZY и явно управлять загрузкой через JOIN FETCH, EntityGraph или DTO-проекции. Контроль > магия. #SpringBoot #Java #Backend @javarush

🚫 Spring Boot: избегай FetchType.EAGER, если это не жизненно необходимо

Когда ты помечаешь связь как EAGER, ORM будет загружать её КАЖДЫЙ раз при загрузке сущности, даже если тебе эти данные вообще не нужны.

Что это значит на практике:

❌ Ты загружаешь Order - автоматически тянется и Customer

❌ Даже если ты не обращаешься к customer в коде

❌ Растёт объём данных, время запроса и нагрузка на БД

А дальше классика жанра — N+1 проблема:

1 запрос - получить список всех Orders

+ N запросов - получить Customer для каждого Order

И всё, производительность улетела.

EAGER кажется удобным, но это скрытая ловушка.

Гораздо безопаснее по умолчанию использовать LAZY и явно управлять загрузкой через JOIN FETCH, EntityGraph или DTO-проекции.

Контроль > магия.

#SpringBoot #Java #Backend

@javarush