Статьи Утилиты Telegram YouTube RuTube Отзывы

Статьи с тэгом «Spring Data»

CrudRepository на Kotlin

20 ноября 2024

Тэги: Spring Data, SQL, Kotlin, rest, gradle, json, Hibernate.

Рассмотрим пример rest-сервиса, написанного на Kotlin и работающего с базой данных с помощью Spring Data JPA. Rest-сервис состоит из трёх слоёв: слой работы с БД, сервисный слой и контроллер. Мы пойдём последовательно по слоям, начиная с нижнего.

В качестве примера возьмём сервис, работающий с музыкальными группами. У каждой группы будет три основных параметра: название, количество участников и дата основания.

Заготовку проекта удобно сгенерить через Spring Initializr. Там достаточно выбрать тип проекта – Gradle – Kotlin, язык – Kotlin. В качестве dependency надо добавить Spring Web (функциональность rest-контроллеров), Spring Data JPA (работа с БД), Validation (валидация входящих rest-запросов) и драйвер вашей СУБД. Для удобства мы будем использовать H2, т.к. она автоматически создаётся в оперативной памяти и не требует никакой настройки. Но вы можете использовать любую другую СУБД. Достаточно подключить нужный драйвер в файле build.gradle.kts и прописать параметры подключения в файле application.yml.

Затем нажимаем Generate – и скачиваем архив с заготовкой проекта. В итоге файл build.gradle.kts в секции dependencies помимо стандартных должен содержать следующие зависимости:

Читать полностью...

Аудит изменений в Spring Data JPA

16 ноября 2024

Тэги: SQL, gradle, rest, Kotlin, Spring Data.

В промышленных системах бывает важно знать, кто и когда сделал изменения конкретной сущности. Прежде всего нас интересует такая информация:

  • кто создал запись
  • дата создания
  • автор последних изменений
  • дата последних изменений

Структура таблицы

Рассмотрим пример, в котором у нас есть таблица company. У компании есть id (автоинкремент) и название.

Поля аудита обычно скрыты от рядовых пользователей, но доступны администраторам системы. Скрипт создания этой таблицы может выглядеть так:

Читать полностью...

Spring Data JPA, REST и Kotlin: проекции

3 мая 2023

Тэги: Collections, Spring Data, Spring Boot, rest, Kotlin, YouTube, руководство, SQL.

В предыдущей статье Spring Data JPA, REST и Kotlin: "один-ко-многим", изменение данных мы научились изменять дочерние сущности городов при изменении родительской сущности страны. А сейчас давайте научимся выбирать из таблицы только те поля, которые нам реально нужны, а не всю сущность целиком. В Spring Data JPA есть такое понятие как проекции. Рассмотрим конкретный пример.

Список из названий стран

Давайте сделаем новый эндпоинт, который будет возвращать список названий всех стран, отсортированный по алфавиту. Кроме названий, других полей выводить не требуется. Опираясь на уже имеющиеся у нас знания из предыдущих статей, добавим в CountryRepository такой метод:

Читать полностью...

Spring Data Rest

30 апреля 2023

Тэги: Hibernate, Spring, Spring Boot, rest, SQL, PostgreSQL, gradle, Spring Data, Kotlin, json, yaml, YouTube, руководство.

Ранее я уже приводил пример в статье CrudRepository на Kotlin, как Spring Data позволяет легко выполнять основные операции над сущностями в БД. Теперь пойдём ещё дальше и рассмотрим как Spring Data Rest позволяет избежать написания контроллеров и сервисной логики. Поскольку писать будем на Kotlin, нам придётся учитывать специфику взаимодействия с Java-кодом, на который изначально был рассчитан Spring Data Rest.

Исходники тестового проекта, адаптированного под Spring Boot 3, доступны на github. Также доступен видеогайд.

Подключаем Spring Data Rest

Для начала создадим заготовку проекта. Проще всего это сделать с помощью Spring Initializr. В настройках выбираем в качестве языка Kotlin и в качестве сборщика Gradle – Kotlin. В dependency нам нужно последовательно добавить три зависимости: Spring Data JPA, Rest Repositories и PostgreSQL Driver. В итоге файл build.gradle.kts должен содержать следующие зависимости:

Читать полностью...

Spring Data JPA, REST и Kotlin: "один-ко-многим", изменение данных

24 марта 2023

Тэги: Spring Data, Collections, YouTube, руководство, rest, Kotlin, Spring Boot.

В предыдущей статье Spring Data JPA, REST и Kotlin: "один-ко-многим", чтение данных мы добавили к родительской сущности «Страна» дочернюю сущность «Город». В итоге у нас получилось отношение «один-ко-многим». В продолжение этой темы научимся создавать, изменять и удалять города вместе со странами в рамках одного запроса от клиента.

Читать полностью...

Spring Data JPA, REST и Kotlin: "один-ко-многим", чтение данных

20 марта 2023

Тэги: Collections, Spring Boot, YouTube, PostgreSQL, руководство, Spring Data, Kotlin, SQL, rest.

В предыдущей статье Spring Data JPA, REST и Kotlin: обработка ошибок мы научились менять формат ответа при возникновении ошибки. А сегодня добавим в базу данных отношение «один-ко-многим». У нас уже имеется таблица country, которая содержит страны.

Содержимое таблицы country

Дочерняя таблица city

Давайте создадим новую таблицу city, которая будет содержать города. И добавим между этими таблицами связь через поле country_id в таблице city. То есть несколько разных городов могут ссылаться на одну и ту же страну. Это и есть отношение «один-ко-многим».

Диаграмма таблиц country и city
Читать полностью...

Spring Data JPA, REST и Kotlin: создание, обновление, удаление

16 марта 2023

Тэги: SQL, Spring Boot, руководство, YouTube, PostgreSQL, Kotlin, rest, Spring Data, json.

В предыдущей статье Spring Data JPA, REST и Kotlin: поиск записей мы научились искать записи по id и по части названия страны. Теперь рассмотрим, как реализовать создание записи, её обновление и удаление. Нам потребуется добавить в наше REST API три новых метода.

Data Transfer Object

Методы создания и обновления будут принимать на вход ранее созданную нами DTO (data transfer object), в которой будут указаны все параметры страны. Однако при создании id страны нам неизвестно, поэтому нужно модифицировать DTO так, чтобы оно допускало null в качестве id:

Читать полностью...

Spring Data JPA, REST и Kotlin: поиск записей

15 марта 2023

Тэги: Spring Data, руководство, Kotlin, PostgreSQL, YouTube, Spring Boot, rest.

В предыдущей статье Spring Data JPA, REST и Kotlin: подключение к БД мы рассмотрели как можно подгружать из БД список всех стран, отсортированных по алфавиту и как реализовать постраничный вывод. А в данной статье узнаем, как искать страну по id и по части её названия.

Читать полностью...

Spring Data JPA, REST и Kotlin: подключение к БД

14 марта 2023

Тэги: Spring Boot, PostgreSQL, Spring Data, Hibernate, yaml, YouTube, SQL, Kotlin, gradle, rest, руководство.

В предыдущей статье Spring Data JPA, REST и Kotlin: заготовка проекта мы сделали заготовку проекта и научились отдавать статический список стран. А сейчас разберёмся с подключением к базе.

Интеграция с базой данных

Теперь пришла пора подключиться к базе данных и научиться считывать данные из неё. Сначала создадим таблицу country и наполним её данными:

Читать полностью...

Spring Data JPA, REST и Kotlin: заготовка проекта

13 марта 2023

Тэги: Spring Boot, Kotlin, gradle, YouTube, rest, руководство, PostgreSQL, Spring Data.

Это первая статья из цикла о создании restful-сервиса на Kotlin, который будет взаимодействовать с СУБД Postgres с помощью Spring Data JPA.

В качестве предметной области выберем города и страны. В одной стране может быть несколько городов. И эту взаимосвязь мы чуть позже отразим в самой базе данных.

Данный материал также доступен на Youtube. Пример проекта вы можете посмотреть на Github.

Читать полностью...

Далее ❯