Введение в Spring Batch: Job, JobInstance, ExecutionContext, JobLauncher и рестарт

Spring Batch предоставляет интерфейс для пакетной обработки данных. Например – конвертация данных из одной базы в другую, из файла в базу, из брокера сообщений в файл и т.д. и т.п. Эти задания могут выполняться разово или по расписанию.
Читать далее «Введение в Spring Batch: Job, JobInstance, ExecutionContext, JobLauncher и рестарт»

Отказоустойчивость в Spring Batch: retry() и skip()

В этой статье рассмотрим, как сделать шаг Step отказоустойчивым. Отказоустойчивость можно настроить только для шага типа Chunks (не для Tasklet).
Читать далее «Отказоустойчивость в Spring Batch: retry() и skip()»

Тестирование с помощью Testcontainers: как поднять в контейнере тестовую базу

Библиотека Testcontainers позволяет поднять тестовую среду в Docker-контейнере на время тестов, что довольно удобно.
Читать далее «Тестирование с помощью Testcontainers: как поднять в контейнере тестовую базу»

OAuth 2 Сlient Credentials Flow. Пример на Spring Boot

В этой статье рассмотрим пример Client Credentials flow с новым экспериментальным сервером авторизации на Spring Boot.  Новый сервер был анонсирован буквально недавно и еще не полностью готов (текущая версия 0.0.2). Но Client Credentials flow (и Authorization Code flow) он уже поддерживает.
Читать далее «OAuth 2 Сlient Credentials Flow. Пример на Spring Boot»

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

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

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

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

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

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

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

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

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