Статьи

Java / Spring: как создать всю базу данных CRUD REST API с ускорением

С каждым годом становится все более очевидным, что Spring Framework является одной из наиболее широко используемых сред веб-разработки для Java. С приближением следующего десятилетия самый популярный модуль Spring, Spring Boot, только что получил серьезное обновление.

Новая версия Spring Boot «2.2.0» и «2020» годятся почти идеально. Таким образом, команда Speedment теперь восполнила пробел, обновив плагин Spring Boot.

Если вы впервые слышите о Speedment, вас ждет удовольствие, так как мы покажем, как плагин Speedment Spring Boot позволяет разработчикам без особых усилий создавать приложения базы данных Spring с помощью Speedment, ORM с мощным API-интерфейсом запросов на основе потоков. , как его костяк.

О скорости

Скорость можно описать как ORM, которого заслуживает сообщество Java – набор инструментов для тех, кто любит быструю разработку и даже более быстрые приложения. Благодаря использованию Java Stream API в качестве основного средства связи с выбранной базой данных, Speedment позволяет разработчикам с предыдущим опытом работы с Java чувствовать себя как дома. Помимо простого в использовании API, Speedment предоставляет разработчикам графический инструмент, который генерирует для них модель предметной области в считанные секунды.

Если вы заинтересованы в скорости в целом, подробную документацию с примерами можно найти
здесь Остальная часть этой статьи будет посвящена плагину Spring Boot.

Spring Boot: самое быстрое начало

Плагин Speedment Spring Boot существует уже некоторое время, но начиная с Speedment 3.2.2 была представлена ​​основная функция – возможность генерировать весь CRUD REST API непосредственно из вашей модели базы данных.

В зависимости от того, начинаете ли вы с нуля или у вас уже есть проект, шаги будут отличаться, но будьте уверены, что процесс интеграции будет легким независимо от состояния вашего проекта.

Если вы хотите интегрировать Spring Boot в существующий проект Speedment, вам необходимо добавить следующие 2 предложения в ваш файл pom.xml:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<plugin>
    <groupId>com.speedment.enterprise</groupId>
    <artifactId>speedment-enterprise-maven-plugin</artifactId>
    <version>${speedment.version}</version>
                 
    <configuration>
        <components>
            <component>com.speedment.enterprise.plugins.spring.SpringGeneratorBundle</component>
        </components>
        <appName>${project.artifactId}</appName>
        <packageName>${project.groupId}</packageName>
    </configuration>
    ... // Database connector dependency          
</plugin>
<dependencies>
 ...
<dependency>
    <groupId>javax.annotation</groupId>
    <artifactId>javax.annotation-api</artifactId>
    <version>1.3.1</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>2.2.1.RELEASE</version>
</dependency>
<dependency>
    <groupId>com.speedment.enterprise.plugins</groupId>
    <artifactId>spring-runtime</artifactId>
    <version>${speedment.version}</version>
</dependency>
...
</dependencies>

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

Если вы начинаете с нуля, перейдите к инициализатору проекта, где для вас будет создан проект, готовый для Spring-Boot. Как вы будете настраивать проект, зависит от вас, но чтобы включить плагин Spring Boot в сгенерированный проект, убедитесь, что установлен флажок рядом с Spring в разделе плагинов. Когда вы будете удовлетворены конфигурацией проекта, нажмите кнопку «Загрузить», и вы получите готовый к использованию архивированный проект.

CRUD Made Easy

Как только вы установите плагин, в инструменте Speedment будут доступны некоторые специфичные для Spring Boot опции, которые можно использовать для настройки вашего REST API. Вы можете запустить инструмент Speedment, выполнив следующую команду:

1
mvn speedment:tool
1
<br>

Если вы используете Speedment впервые, вы можете ознакомиться с рабочим процессом, выполнив
Краткое руководство «Hello Speedment» .

По умолчанию инструмент Speedment не генерирует REST API. Чтобы сгенерировать CRUD REST API для конкретной таблицы, выберите таблицу в древовидном представлении и выберите опцию «Generate @RestController» вместе с опцией «REST Enable Create / Update / Delete». При нажатии «Создать» будет создан набор отображений REST, которые реализуют операции CRUD для конкретной таблицы.

Это оно! Ручное кодирование не требуется. Просто запустите сгенерированный Spring, выполнив команду:

1
mvn spring-boot:run

Создание сущностей с использованием REST

Чтобы создать новый объект, используя созданный вами REST API, вы должны выполнить запрос POST к маршруту, указанному в инструменте. По умолчанию имя этого маршрута совпадает с именем вашей таблицы, с префиксом имени вашей схемы. Если вы снимите флажок «Конечная точка REST», вы можете указать собственное имя маршрута. Тело запроса должно содержать пары ключ-значение в объекте JSON, где значения «REST Field Name» из инструмента являются ключами.

Если бы у нас была таблица с именем person с столбцами id, name и age, мы бы отправили следующий запрос для создания новой сущности person:

1
2
3
4
5
6
POST localhost:8080/db/person
{
    “id”: 1,
    “name”: “Jane”,
    “age”: 25
}
1
curl -d '{“id”: 1,“name”: “Jane”,“age”: 25}' -H "Content-Type:application/json" -X POST localhost:8080/db/person

Если столбец генерируется автоматически (или использует последовательность), вы можете исключить его из тела POST. Если вы хотите принудительно исключить определенный столбец из тела POST, щелкните соответствующий столбец в представлении дерева инструментов и снимите флажок «Включить в создание тела» и заново создайте модель вашего домена. С другой стороны, если вы хотите обеспечить наличие определенного столбца в теле POST при выполнении запроса, отметьте «Обязательно в Create Body» и заново создайте модель вашего домена.

Извлечение сущностей с помощью REST

Чтобы получить наш недавно созданный объект, мы должны выполнить запрос GET по тому же пути, который использовался для создания объекта:

1
GET localhost:8080/db/person
1
curl localhost:8080/db/person/1

Выполненный запрос вернет JSON Array всех существующих объектов. В нашем случае он вернул бы массив только с нашей единственной сущностью:

1
2
3
4
5
6
7
[
    {
        “id”: 1,
        “name”: “Jane”,
        “age”: 25
    }
]

Расширенные концепции, такие как фильтры и сортировщики, подробно описаны в официальной документации Speedment.

Обновление существующих объектов с помощью REST

Обновление существующей сущности с использованием REST API выполняется аналогично созданию сущности. Вместо запроса POST мы выполняем запрос PATCH, и маршрут расширяется идентификатором объекта. Какой идентификатор нашей сущности зависит от столбца первичного ключа этой таблицы. Поскольку наш столбец PK является числовым типом, идентификатор нашей сущности будет целым числом.

Чтобы обновить сущность, которую мы создали в нашем предыдущем примере, мы выполнили бы следующий запрос:

1
2
3
4
5
PATCH localhost:8080/db/person/1
{
    “name”: “Mike”,
    “age”: 43
}
1
curl -d '{“name”: “Jane”,“age”: 25}' -H "Content-Type:application/json" -X PATCH localhost:8080/db/person/1

По умолчанию все столбцы включены в тело PATCH (кроме столбца первичного ключа), но они не являются обязательными. Если вы хотите принудительно исключить определенный столбец из тела запроса, щелкните соответствующий столбец в представлении дерева инструментов и снимите флажок «Включить в тело обновления» и заново создайте модель своего домена. С другой стороны, если вы хотите обеспечить наличие столбца в теле запроса, отметьте «Обязательно в теле обновления» и обновите модель вашего домена.

Удаление объектов с помощью REST

Удалить сущность с помощью REST API довольно просто – мы выполняем запрос DELETE по тому же пути, который используется для обновления сущностей.

Чтобы удалить сущность, которую мы создали и обновили в предыдущих примерах, мы выполнили бы следующий запрос:

1
DELETE localhost:8080/db/person/1
1
curl -X DELETE localhost:8080/db/person/1

Резюме

Запуск новых проектов иногда может быть суетой. Как разработчики, мы хотим максимально избежать этих неудобств и погрузиться прямо в кодирование. С новым плагином Speed ​​Boot Spring Boot разработчики могут опередить игру, автоматически генерируя все необходимые конфигурации и контроллеры REST непосредственно из базы данных.

Мы надеемся, что вам понравилось это краткое руководство по новым функциям CRUD, которые предоставляет плагин Speedment Spring Boot. Если вас интересует более подробное объяснение новых функций, перейдите к официальной документации, где вы найдете подробные объяснения и примеры новых функций CRUD.

См. Оригинальную статью здесь: Java / Spring: как сгенерировать API-интерфейс CRUD REST для всей базы данных с ускорением

Мнения, высказанные участниками Java Code Geeks, являются их собственными.