Skip to content

NeedleInSpace/CRM-Spring-Backend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 

Repository files navigation

Backend часть CRM системы

Структура проекта

Для удобства работы над проектом следует придерживаться следующей структуры:

- src           // Исходный код
    \
    |- test        // Тесты
    |- main        // Основной код
          \
          |- resources    // Код с ресурсами
                \
                |- application.properties     // Параметры с основными настройками приложения
          |- java.com.ues.crm_backend         // Код на java
                \
                |- Config                  // Файлы конфигураций
                        \
                        |- CorsConfig      // Файл с конфигурацией CORS
                |- Controllers             // Файлы контроллеров
                        \
                        |-  CompanyController.java         // Класс с эндпоинтами для таблицы Company
                        |-  ContactPersonController.java   // Класс с эндпоинтами для таблицы ContactPerson
                        |-  ...
                |- DataBase                // Файлы для взаимодействия с БД
                        \
                        |- Repositories    // Репозитории для взаимодействия с БД из контроллеров
                              \
                              |- CompanyRepository.java    //  Класс с основными методами для взаимодействия с таблицей Company
                              |- ...
                        |- Interfaces      // Интерфейсы для выполнения SQL запросов в БД
                              \
                              |- ICompanyRepository.java   //  Интерфейс для совершения SQL запросов к таблице Company
                              |- ...
                |- Models           // Файлы моделей
                        \
                        |- Company         // Файлы моделей для таблицы Company
                              \
                              |- Company.java              // Стандартная версия модели Company
                              |- SerializedCompany.java    // Сериализуемая версия модели Company (может отсутствовать. См. раздел "костыли")
                        |- ContactPerson   // Файлы моделей для таблицы ContactPerson
                        |- ...

Примерный шаблон работы

Здесь описан наиболее общий шаблон работы программиста на стороне backend'а. Некоторые шаги могут быть пропущены.

1. Создать таблицу в БД.

2. Создать новую директорию для модели в папке Models.

2.1. В модели используются только стандартные типы

Если в таблице используются только стандартные типы (String, Number, Boolean, Char, Data и некоторые другие), то можно создать один класс модели (ModelName.java).

Конвертация из строк таблицы в объект класса (и наоборот) осуществляется через библиотеку JpaRepository. Это означает, что все поля должны быть сопрежены со столбцами из таблицы с помощью анотаций.

2.2. В модели используются неконвертируемые типы

Если в таблице используются неконвертируемые для ORM типы (массивы, списки и т.д.), то при попытке поместить их в БД будет выброшена ошибка. Чтобы этого избежать, создаётся промежуточный сериализируемый класс, содержащий в себе только понятные для ORM типы.

В итоге получается, что есть "стандартная" модель ModelName.java, содержащая в себе все поля в таком виде, что их удобно использовать в коде, а есть "сериализируемая" версия SerializedModelName.java для нормальной конвертации ORM (аннотациями помечается только она).

P.S. Если ничего не понятно, то дочитайте инструкцию до конца - возможно станет лучше.

3. Создать интерфейс для работы ORM

В директории Interfaces создаётся новый интерфейс, унаследованный от JpaRepository<Класс_конвертируемого_объекта, Тип_PK> В теле интерфейса описываются все пользовательские запросы к БД на языке SQL.

На этом этапе ORM уже можно использовать. Для этого создаётся экземпляр интерфейса, который обрабатывает все запросы и автоматически производит конфертацию строк из БД в POJO и наоборот.

4. Создаётся класс репозитория.

В директории Repositories создаётся класс, содержащий в себе все основные методы взаимодействия с БД. Это делается для разделения логики обработки эндпоинтов и реализации базы.

5. Создаётся контроллер

В директории Controllers создаётся класс контроллера, содержащий в себе методы для обработки эндпоинтов. Вся маршрутизация обрабатывается через springframework, настраиваемый через аннотации.

6* Настройка

Конфигурация БД и сервера указывается в файле application.properties.

Конфигурация CORS указывается в CorsConfig.java.

Итоговая архитектура

Пример для POST запроса:

                            POST Запрос      Вызов метода       SQL запрос              return            return            return
Участник:             Frontend -----> Controller -----> Repository -----> ORM_Interface -----> Repository -----> Controller -----> Frontend
Оперируемый тип:    POST c JSON ---->    POJO    -----> SerializedPOJO ->  SQL строка   -----> Ответ от БД ----> Ответ от БД ----> Ответ от сервера

Запуск

На данный момент сервер стартуется из IDE. Для этого необходимо запустить метод main.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages