Один ко многим в Java: когда коллекция в родителе оправдана, а когда — нет

Реляционная модель хранит FK на стороне дочерней таблицы. В Java у нас два способа отразить эту связь: коллекция в родительской сущности ( @OneToMany / List) или ссылка в дочерней ( @ManyToOne / long parentId). Выбор между ними влияет на поведение при записи — и именно здесь большинство решений принимаются без достаточного обоснования. Тест, который даёт однозначный ответ Влад Михалча формулирует так: ассоциация @ManyToOne является наиболее естественным способом отображения связи «один ко многим» в базе данных и, как правило, наиболее эффективной альтернативой. Практический критерий: если убрать коллекцию и заменить её отдельным запросом, какое бизнес-правило перестанет работать? Если ответ — «никакое, просто список будет получаться отдельным запросом» — коллекция не нужна как часть модели. Если ответ — «нарушится инвариант» — коллекция оправдана. Типичные случаи:

https://habr.com/ru/articles/1050776/

#java #jpa #hibernate #spring #spring_data #jdbc #onetomany #manytoone #ddd #aggregate

Один ко многим в Java: когда коллекция в родителе оправдана, а когда — нет

Реляционная модель хранит FK на стороне дочерней таблицы. В Java у нас два способа отразить эту связь: коллекция в родительской сущности ( @OneToMany / List) или ссылка в дочерней ( @ManyToOne / long...

Хабр

🚨 NEWS: JPA e Hibernate — Diagnosticare e Risolvere l'N+1 Problem con Esempi Reali

Ecco i punti chiave in breve:
💡 La tua applicazione Java va bene in sviluppo, ma in produzione impiega secondi per caricare una lista di ordini. Apri i log e vedi centinaia di query SQL identiche. Sei incappato nell'N+1 problem di J...

🚀 LINK: https://meteoraweb.com/sviluppo-di-siti-web/jpa-e-hibernate-diagnosticare-e-risolvere-ln1-problem-con-esempi-reali

#performance #n+1Problem #jPA #hibernate #java

🚨 NEWS: JPA e Hibernate — Best Practices per Eliminare l'N+1 Problem e Ottenere Query 10x Più Veloci

Ecco i punti chiave in breve:
💡 Hai mai notato che una semplice lista di entità in JPA impiega secondi a caricarsi, e dopo aver attivato i log SQL scopri che per ogni riga principale vengono eseguite decine di query identiche? Benve...

🚀 LINK: https://meteoraweb.com/sviluppo-di-siti-web/jpa-e-hibernate-best-practices-per-eliminare-ln1-problem-e-ottenere-query-10x-piu-veloci

#n+1Problem #bestPractices #lazyLoading #jPA #hibernate

JPA e Hibernate — Best Practices per Eliminare l'N+1 Problem e Ottenere Query 10x Più Veloci

Scopri come diagnosticare e risolvere l'N+1 problem in JPA e Hibernate con fetch join, @EntityGraph e batch fetching. Best practices con esempi Java.

Meteora Web

Introducing Quarkus Data: One Gateway for Data Access https://quarkus.io/blog/introducing-quarkus-data/

#java #quarkus #jpa

Introducing Quarkus Data: One Gateway for Data Access

Quarkus: Supersonic Subatomic Java

Skill of the Week: Spring Data JPA. Никто не знает JPA, даже AI

Знание и умение разрабатывать на Spring Data JPA — это обязательный навык для разработчика, если он хочет заниматься разработкой приложений на Spring. Этого мы ожидаем и от AI-агента. Удовлетворяют ли наши AI-агента этому условию? Во многом зависит от того, насколько продвинутую модель вы используете. Значит ли это, что Opus 4.8 не совершает ошибок? Совсем нет. Более того, иногда удивляешься, почему еще вчера он настроил связь правильно, а уже сегодня сделал ту же работу, но добавил CascadeType.ALL . В сегодняшнем эпизоде еженедельной рубрики Skill of the Week разберёмся, как, используя Spring Data JPA Skill , научить своего агента важным навыкам при работе со Spring Data JPA.

https://habr.com/ru/companies/haulmont/articles/1045590/

#aiагенты #jpa #spring_data_jpa #java #spring #spring_boot #hibernate #skills

Skill of the Week: Spring Data JPA. Никто не знает JPA, даже AI

Знание и умение разрабатывать на Spring Data JPA — это обязательный навык для разработчика, если он хочет заниматься разработкой приложений на Spring. Этого мы ожидаем и от AI-агента. Удовлетворяют ли...

Хабр

[Перевод] Новые возможности Hibernate 7.4

Hibernate 7.4 исправляет старую проблему с пагинацией и fetch join. Раньше запрос на первые 10 Order вместе с OrderItem не мог безопасно ограничиться на уровне SQL. Из-за join один заказ превращался в несколько строк, и limit мог обрезать коллекцию. Поэтому Hibernate загружал все подходящие строки, а страницу выбирал уже в памяти. На больших данных это било по памяти и могло закончиться OutOfMemoryException . Теперь Hibernate сначала выбирает нужные id родительских сущностей во вложенном запросе, а затем загружает для них полные дочерние коллекции. Пагинация остается в БД, данные не режутся. Еще в 7.4 появились history и audit tables. @Temporal хранит версии строк и позволяет читать сущность на конкретный момент времени. @Audited пишет изменения ADD / MOD / DEL в audit-таблицу без Envers.

https://habr.com/ru/companies/spring_aio/articles/1047844/

#hibernate #hibernate_orm #orm #java #jpa #kotlin

Новые возможности Hibernate 7.4

В Hibernate 7.4 появилось несколько улучшений упрощающих загрузку страницы данных вместе со связанными дочерними коллекциями, доступ к историческим данным и ведение журнала аудита. В статье...

Хабр

Esta es la lista de capítulos del tutorial de Persistencia: explorando #JPA e #Hibernate desde cero:

https://www.youtube.com/playlist?list=PLtdeXn2f7ZbMHo9bdFn35lTUtWjwupEb5

Suscríbete a mi canal y aprende de programación.

#Followback

Nota: imagen generada con IA.

Buenas tardes, he publicado una nueva parte del tutorial "Creando Aplicaciones con Spring Boot y su Ecosistema". Mostramos como crear una aplicación multi-datasource JPA (que usa varias bases de datos)
#Java #Jpa #BBDD #FelizLunes

https://youtu.be/DWwphOgeYP8

Nota: imagen generada con IA generativa.

Why should data persistence in 2026 still depend on the database? @wernerwedge analyzes how #JakartaData paves the way for standardized data access — whether Oracle, MongoDB, or Cassandra.

Read now: https://javapro.io/2026/03/03/jakarta-data-and-nosql-standardized-data-access-for-jakarta-ee/

#JakartaEE #NoSQL #JPA #JAVAPRO @jakartaee @EclipseFdn

JPA отлично справляется с полными графами. А что насчёт частичных?

JPA не предоставляет first-class модель для частичных вложенных графов как концепта. Для этого нужны JDBC (ручная сборка), jOOQ (MULTISET) или Blaze Persistence (Entity Views). Большинство обсуждений вокруг persistence начинается не с той проблемы. Мы сравниваем фреймворки, SQL-инструменты, ORM… Но реальная проблема проще и фундаментальнее: Реляционный JOIN результат имеет плоскую форму по умолчанию. Приложениям нужны вложенные объектные графы или специализированные формы данных. Реляционная реальность Рассмотрим простую модель: Owner → Pet → Visit В реляционной базе — три таблицы с foreign key связями. После JOIN:

https://habr.com/ru/articles/1044354/

#jpa #Hibernate #Blaze_Persistence #Entity_Views #jOOQ #MULTISET #JDBC #SQL #ORM #EntityGraph

JPA отлично справляется с полными графами. А что насчёт частичных?

JPA не предоставляет first-class модель для частичных вложенных графов как концепта. Для этого нужны JDBC (ручная сборка), jOOQ (MULTISET) или Blaze Persistence (Entity Views). Большинство обсуждений...

Хабр