Введение в QueryDSL

Есть несколько способов составить JPA-запрос, среди них — неудобный JPA Criteria API. Все признают, что запросы, составленные таким способом, плохо читаются. Как альтернатива появилась библиотека QueryDSL — она гораздо удобнее.
Читать далее «Введение в QueryDSL»

@SqlResultSetMapping — превращение результата SQL-запроса в объект

В этой статье пойдет речь о том, как превратить результат нативного SQL-запроса в объект.
Читать далее «@SqlResultSetMapping — превращение результата SQL-запроса в объект»

Получение результата запроса в виде Map в Hibernate

Иногда удобно извлечь из базы данные в вид Map. Например, если запрос содержит group by. Ниже рассмотрим, как это сделать.
Читать далее «Получение результата запроса в виде Map в Hibernate»

Кэш первого и второго уровня в Hibernate и READ_ONLY CacheConcurrencyStrategy

В этой статье мы рассмотрим, что такое кэш первого и второго уровня в Hibernate. Пример на Spring Boot.
Читать далее «Кэш первого и второго уровня в Hibernate и READ_ONLY CacheConcurrencyStrategy»

Как получить проекцию OneToMany c помощью ResultTransformer (пример на Hibernate и Spring Boot)

Мы уже рассматривали несколько способов получить проекцию. Самым гибким считается Hibernate  ResultTransformer. Его мы и будем использовать ниже для получения проекции OneToMany.
Читать далее «Как получить проекцию OneToMany c помощью ResultTransformer (пример на Hibernate и Spring Boot)»

Способы получения проекций в Hibernate

Иногда требуется получить из базы не все поля сущности, а выборочно.

Например, есть шаблон проектирования DTO (Data Transfer Object) — суть его в том, что мы создаем специальный класс с небольшим количеством полей для отправки на фронтенд. К примеру, есть сущность City c 20 полями, а мы создаем для нее класс CityDto, который имеет всего два поля: id и name.
Читать далее «Способы получения проекций в Hibernate»

Пакетная обработка (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.  В SQL оно устраняет дубликаты строк, а в JPQL — дубликаты объектов.
Читать далее «JPQL DISTINCT (пример на Hibernate и Spring Boot)»