Все про приложение - daniil-57722/exam_madela_practice GitHub Wiki
Назначение приложения
Данное приложения позволяет пользователю осуществлять взаимодействие с базой данных используя определенные HTTP запросы.
Функциональные требования
- Приложение должно воспринимать HTTP запросы Get и Post;
- Приложение должно воспринимать тело запроса(применимо к Post запросам) в формате JSON;
- Приложение должно возвращать ответы на запросы в формате JSON;
- При отсутствии вызываемой сущности и другом непредвиденном поведении пользователя приложение должно выводить сообщение об ошибке;
Реализованы отлавливания следующих http-запросов
Диаграммы
Диаграмма вариантов использования
Диаграмма классов
Диаграмма компонентов
Диаграмма последовательности
ER-диаграмма структуры базы данных
Интеграции используемые в проекте
В проект были интегрированы следующие зависимости
Spring framework
Из данного фреймворка был задействован модуль Spring boot
в виде таких зависимостей как
- spring-boot-starter-web
- spring-boot-devtools
- spring-boot-starter-test
- spring-boot-starter-data-jpa
Lombok
В связи с использованием Spring data, предоставляющего функционал схожий с hibernate, структура классов уровня сущностей была сведена к структуре таблиц базы данных и для уменьшения объема кода была внедрена зависимость Lombok, позволяющая генерировать конструкторы, геттеры и сеттеры с помощью аннотаций
.
Пример используемых аннотаций
@NoArgsConstructor;
@AllArgsConstructor;
@Getter;
@Setter.
ModelMapper
Был использован для автоматического преобразования моделей в сущности и наоборот, позволяет автоматически "перекладывать" значения полей с одинаковым названием между разными объектами, в том числе может обнаруживать соответствия среди полей вложенных объектов. Полезный в общем, значительно сокращает объем кода.
Postgresql (как connector, бд потом)
Использовался для подключения к базе данных postgresql, позже - к Docker-контейнеру
с базой данных (зависимость подошла т.к. контейнер создан с помощью официального образа postgresql)
Поподробнее про БД
В проекте был использован ORM предоставляемый Spring data, также в качестве СУБД использовался Postgresql 13.
Про Docker
я этот контейнер 3 часа создавал, а он его стер на следующий день
Ближе к концу разработки БД была вынесена в Docker-контейнер, который на чистой магии работает на Windows
. Подключение к нему абсолютно такое же, как и к обычной бд в Postgres, так что с переходом на контейнер с БД проблем не возникло
Все тестирование производилось уже с БД в контейнере, Postgres только для красоты