Статьи

Создание REST API с использованием Speedment и Spring

С четвертым выпуском Spring Boot разработка корпоративных приложений для Интернета стала намного проще. Что-то, что все еще требует много времени от имени разработчика, моделирует существующую базу данных для примера Hibernate, чтобы получить объектно-ориентированное представление данных. В этом уроке мы рассмотрим, как использовать инструмент с открытым исходным кодом Speedment вместе с Spring для создания сущностей, менеджеров и контроллеров одним нажатием кнопки, что позволит вам начать разработку намного быстрее.

О скорости

Speedment — это Java-инструментарий с открытым исходным кодом, позволяющий разработчику быстро генерировать все необходимое для взаимодействия с базой данных. Используя графический инструмент, вы можете подключиться к базе данных и генерировать Java-источники в считанные секунды. Speedment построен по модульному принципу, как и Spring, что упрощает изучение и использование только тех частей, которые вам интересны. В этой статье мы собираемся использовать плагин для Speedment для генерации контроллеров Spring в дополнение к стандартным файлам.

Шаг 1: Создание нового проекта Spring Boot

Spring Boot состоит из нескольких шаблонов, облегчающих начало работы с новым приложением. Мы собираемся использовать один из них «spring-boot-starter-web», чтобы подготовить почву для нашего веб-приложения.

Начните с создания нового проекта Maven и добавьте в файл «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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<?xml version="1.0" encoding="UTF-8"?>
    <modelVersion>4.0.0</modelVersion>
     
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.4.1.RELEASE</version>
    </parent>
     
    <groupId>com.github.pyknic</groupId>
    <artifactId>speedment-spring-example</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <packaging>jar</packaging>
     
    <properties>
        <java.version>1.8</java.version>
         
        <speedment.version>3.0.1</speedment.version>
        <mysql.version>5.1.39</mysql.version>
    </properties>
     
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
             
            <plugin>
                <groupId>com.speedment</groupId>
                <artifactId>speedment-maven-plugin</artifactId>
                <version>${speedment.version}</version>
                 
                <dependencies>
                    <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-java</artifactId>
                        <version>${mysql.version}</version>
                    </dependency>
                     
                    <dependency>
                        <groupId>com.speedment.plugins</groupId>
                        <artifactId>spring-generator</artifactId>
                        <version>${speedment.version}</version>
                    </dependency>
                </dependencies>
                 
                <configuration>
                    <components>                      
<component>com.speedment.plugins.spring.SpringGeneratorBundle</component>
                    </components>
                </configuration>
            </plugin>
        </plugins>
    </build>
     
    <dependencies>
        <dependency>
            <groupId>com.speedment</groupId>
            <artifactId>runtime</artifactId>
            <version>${speedment.version}</version>
            <type>pom</type>
        </dependency>
         
        <dependency>
            <groupId>com.speedment.plugins</groupId>
            <artifactId>spring-generator</artifactId>
            <version>${speedment.version}</version>
        </dependency>
         
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql.version}</version>
        </dependency>
         
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
</project>

Это настроит ваш проект как приложение Spring Boot и скажет ему использовать Speedment с плагином Spring Generator.

Шаг 2: Использование ускорения для генерации источников

После изменения файла pom в IDE будет доступен ряд новых целей Maven. Скорость можно использовать как графически, так и из командной строки. В этом уроке мы будем использовать пользовательский интерфейс. Чтобы запустить Speedment Tool, выполните следующую цель Maven в проекте:

1
mvn speedment:tool

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

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

Шаг 3: Создать основной файл

Компания Speedment создала полную объектно-ориентированную модель базы данных, но нам все еще нужно создать точку входа для приложения. Мы поместим это в основной пакет и назовем его Main.java.

Main.java

01
02
03
04
05
06
07
08
09
10
11
12
13
14
package com.github.pyknic.spring;
 
import com.speedment.common.logger.Level;
import com.speedment.common.logger.LoggerManager;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
 
@SpringBootApplication
public class Main {
     
    public static void main(String... args) {
        SpringApplication.run(Main.class, args);
    }
}

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

1
http://localhost:8080/hare/

Теперь будет возвращено JSON-представление таблицы «заяц» в моей базе данных.

1
2
3
4
5
[
    {"id":1, "name":"Harry", "color":"Gray", "age":3},
    {"id":2, "name":"Henrietta", "color":"White", "age":2},
    {"id":3, "name":"Henry", "color":"Black", "age":9}
]

Примечание № 1: Если вы получаете исключение, которое говорит что-то в стиле этого …

1
2
3
There was an unexpected error (type=Internal Server Error, status=500).
Could not write content: No value present (through reference chain:
java.util.ArrayList[0]...

… Это, вероятно, означает, что в вашей базе данных есть обнуляемые столбцы, которые Speedment выберет для реализации в качестве OptionalLong, OptionalInt и т. Д. Вы можете отключить эту функцию в инструменте Speedment, установив для поля «Обнуляемая реализация» значение WRAPPER вместо OPTIONAL для этих столбцов.

Примечание № 2: Если вы получаете исключение в стиле этого …

1
2
java.sql.SQLException: Access denied for user 'root'@'localhost'
(using password: YES)

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

application.properties

1
2
jdbc.username=root
jdbc.password=password

Резюме

В этой статье мы использовали плагин Speedment и Spring Generator для автоматического создания завершенного Spring Boot Application. Компания Speedment создала сущности, менеджеров и контроллеры REST для связи с базой данных. Если вы хотите узнать больше о Speedment и о том, как вы можете управлять сгенерированным кодом, ознакомьтесь со многими примерами на странице Speedment GitHub !

Ссылка: Создание REST API с помощью Speedment and Spring от нашего партнера по JCG Эмиля Форслунда из блога Age of Java .