TGViewer
Java Guru 🤓 Java Guru 🤓 @javatasks · 13.1K subscribers
Post #3744 848

Forwarded from Java библиотека

N+1 в Spring Boot выглядит безобидно, пока прод не начинает молиться на базу данных.

Классический сценарий:

Вы грузите список заказов:

orderRepository.findAll()

А потом в цикле обращаетесь к order.getItems().

Hibernate сначала делает один запрос за заказами, а потом ещё по одному запросу на каждый заказ, чтобы достать items.

100 заказов = 101 SQL-запрос.

И вот здесь спасает @EntityGraph.

Он позволяет явно сказать репозиторию, какие связи нужно подтянуть сразу:

@EntityGraph(attributePaths = {"items"})

В итоге Hibernate может сгенерировать один запрос с JOIN, вместо десятков лишних походов в базу.

Что получаем:

- меньше SQL-запросов
- меньше нагрузки на БД
- чище код репозитория
- без ручного JPQL
- fetch-стратегия управляется точечно под конкретный кейс

LAZY сам по себе не зло. Зло - когда вы не контролируете, где и как он срабатывает.

@EntityGraph - один из самых простых способов держать N+1 под контролем в Spring Boot.

Полезные ресурсы по Java 👩‍💻| Наш канал в MAX 🟪
  • 👍 5
  • 🔥 4
  • ❤ 1
More from @javatasks
  1. Oct 14, 2026Post #3931
  2. Oct 14, 2026Post #3930
  3. Oct 14, 2026Post #3929
  4. Oct 13, 2026Post #3928
  5. Oct 13, 2026Post #3927
  6. Oct 13, 2026👩‍💻 Spring Boot под нагрузкой: почему сервис работает локально и падает в production При…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →