Все про приложение - daniil-57722/exam_madela_practice GitHub Wiki

Назначение приложения

Данное приложения позволяет пользователю осуществлять взаимодействие с базой данных используя определенные HTTP запросы.

Функциональные требования

  • Приложение должно воспринимать HTTP запросы Get и Post;
  • Приложение должно воспринимать тело запроса(применимо к Post запросам) в формате JSON;
  • Приложение должно возвращать ответы на запросы в формате JSON;
  • При отсутствии вызываемой сущности и другом непредвиденном поведении пользователя приложение должно выводить сообщение об ошибке;

Реализованы отлавливания следующих http-запросов

Диаграммы

Диаграмма вариантов использования

8T8RRn7-Ef0

Диаграмма классов

class

Диаграмма компонентов

image

Диаграмма последовательности

pos

ER-диаграмма структуры базы данных

image

Интеграции используемые в проекте

В проект были интегрированы следующие зависимости

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. 1533641906_3

Про Docker

я этот контейнер 3 часа создавал, а он его стер на следующий день

Ближе к концу разработки БД была вынесена в Docker-контейнер, который на чистой магии работает на Windows. Подключение к нему абсолютно такое же, как и к обычной бд в Postgres, так что с переходом на контейнер с БД проблем не возникло
Все тестирование производилось уже с БД в контейнере, Postgres только для красоты

image