JPA отлично справляется с полными графами. А что насчёт частичных?
DmitriiRussuLink 10 минут назад JPA отлично справляется с полными графами. А что насчёт частичных? Простой 5 мин 217 Java * Мнение JPA не предоставляет first-class модель для частичных вложенных графов как концепта. Для...
GPT-5.6 31 Temmuz 2026'da yayınlanacak mı?
В сфере искусственного интеллекта произошло заметное событие. DmitriiRussuLink 10 минут назад JPA отлично справляется с полными графами. А что насчёт частичных? Простой 5 мин 217 Java * Мнение JPA не предоставляет first-class модель для частичных вложенных графов как концепта.
Для этого нужны JDBC (ручная сборка), jOOQ (MULTISET) или Blaze Persistence (Entity Views). Большинство обсуждений вокруг persistence начинается не с той проблемы. Мы сравниваем фреймворки, SQL-инструменты, ORM… Но реальная проблема проще и фундаментальнее:Реляционный JOIN результат имеет плоскую форму по умолчанию.
Технические детали
Приложениям нужны вложенные объектные графы или специализированные формы данных. Реляционная реальностьРассмотрим простую модель: Owner → Pet → VisitВ реляционной базе — три таблицы с foreign key связями. После JOIN:Дублирование строк, картезианский взрыв, несоответствие структуры.
Это не баг фреймворка. Это фундаментальное несоответствие между реляционной и объектной моделями. EntityGraph: управление загрузкой, не формой данных@EntityGraph(attributePaths = { "pets", "pets.
visits" }) Owner findById(String id);Один запрос, нет N+1, загружается полный граф. Но здесь важно понять ограничение:EntityGraph управляет загрузкой, identity graph - какие связи подгрузить и когда. Projection управляет shape of result, то есть какую форму должны принять данные.
Отраслевые последствия
EntityGraph отвечает на вопрос «как загрузить полный граф? Но не на вопрос «что если нужна другая форма? »Например:record OwnerListView( String id, String name, List pets // только имена, не сущности )Здесь не нужны Visit-сущности и полная модель Pet.
EntityGraph здесь заканчивается. Реальная проблема: кто строит граф? Кто отвечает за построение вложенного объектного графа?
Это ось архитектурного выбора:JDBC → граф строит приложение jOOQ → граф строит SQL-абстракция Blaze → граф строит ORM Разные инструменты решают одну и ту же проблему на разных архитектурных уровнях. JDBC: граф строит приложениеSQL возвращает плоские строки. Граф собирается вручную за один проход - паттерн accumulator:static List extractWithGraph(ResultSet rs) throws SQLException { Map owners = new LinkedHashMap<>(); while (rs.
Событие, по словам экспертов, усилит конкуренцию в сфере ИИ.




