Пакетная обработка (batch processing) в Hibernate

Как уже говорилось, в конце транзакции происходит сброс (flush) накопившихся изменений в базу данных. При этом команды insert, update, delete в норме отправляются в базу данных по сети поодиночке.
Читать далее «Пакетная обработка (batch processing) в Hibernate»

Cascade Types (пример на Hibernate и Spring Boot)

В этой статье рассмотрим самые популярные каскадные операции на примере отношения OneToMany (хотя их возможно использовать также в OneToOne и ManyToMany).
Читать далее «Cascade Types (пример на Hibernate и Spring Boot)»

JPQL DISTINCT (пример на Hibernate и Spring Boot)

Ключевое слово DISTINCT в JPQL  перебрасывается в SQL запрос и работает как DISTINCT в SQL (если не указать в настройках запроса “не перебрасываться”). Но помимо этого, DISTINCT фильтрует результирующий список объектов (entities), исключая из него дубликаты. То есть DISTINCT может влиять на результат и на уровне базы, и на уровне Hibernate.
Читать далее «JPQL DISTINCT (пример на Hibernate и Spring Boot)»

Отношение ManyToMany в Hibernate и Spring

В этой статье рассмотрим, почему в отношении ManyToMany оптимальнее использовать для коллекций Set, а не List.
Читать далее «Отношение ManyToMany в Hibernate и Spring»

Наследование сущностей с помощью Single Table (пример на Hibernate и Spring Boot)

Продолжим видоизменять предыдущий пример с заказчиками, только теперь наследовать сущности будем другим способом: не с помощью Joined Table (как там), а с помощью Single Table. Как понятно из названия, все заказчики теперь будут храниться в одной таблице.
Читать далее «Наследование сущностей с помощью Single Table (пример на Hibernate и Spring Boot)»

Наследование сущностей с помощью Joined Table (пример на Hibernate и Spring Boot)

Наследовать сущности полезно не для того, чтобы хранить общую часть в родительской сущности (это реализуется композицией). А для того, чтобы можно было использовать их в шаблонах проектирования: например, Strategy. Ниже рассмотрим пример.
Читать далее «Наследование сущностей с помощью Joined Table (пример на Hibernate и Spring Boot)»

Синхронизация двунаправленных (bidirectional) отношений

В этой статье рассмотрим, как поддерживать согласованность ссылок между двунаправленными отношениями.
Читать далее «Синхронизация двунаправленных (bidirectional) отношений»

Как работает orphanRemoval

Рассмотрим настройку orphanRemoval, которая касается удаления элементов из коллекции. У нас это будет удаление комментария из списка комментариев топика.
Читать далее «Как работает orphanRemoval»

Отношение OneToMany в Hibernate и Spring

В этой статье покажу подводные камни одностороннего отношения OneToMany, и почему его лучше не использовать.
Читать далее «Отношение OneToMany в Hibernate и Spring»