Skip to content

Latest commit

 

History

History
98 lines (68 loc) · 7.64 KB

File metadata and controls

98 lines (68 loc) · 7.64 KB

Проект uml-data-model-processor

📖 Описание

Проект uml-data-model-processor представляет собой инструмент для автоматизации процессов проектирования и реализации баз данных на основе диаграмм UML формата PlantUML. Цель проекта заключается в сокращении рутины разработчиков путем автоматической генерации необходимых артефактов, таких как DDL скрипты и заготовки классов POJO.

❓ Почему это полезно?

При создании приложений часто возникает необходимость построения модели данных (Information Engineering Diagram) на основе анализа предметной области. Разработчики вручную создают таблицы и классы моделей, что занимает некоторое время и ресурсы. Инструмент позволит значительно ускорить этот процесс, обеспечивая создание качественной базовой инфраструктуры для дальнейшего развертывания системы.

⚙️ Что делает этот инструмент?

  1. Автоматически генерирует SQL-запросы для создания таблиц в базе данных (SQL Data Definition Language, DDL) на основе предоставленных UML-диаграмм PlantUML.
  2. Формирует начальные классы Java (POJO-классы) для последующего использования в приложениях, поддерживающих стандарты JDBC или JPA.

🚧 Как работает?

Приложение принимает на вход файлы PlantUML (.pu, .puml, .txt) и преобразует их в готовые SQL-скрипты и POJO-классы. Вам потребуется базовое понимание синтаксиса UML для подготовки правильной диаграммы. Рекомендуется предварительно проверять схему на валидность с помощью онлайн-инструмента PlantUML Web Server.

🥊 Преимущества проекта:

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

🩼 Текущие ограничения:

Так как проект находится на стадии MVP, пока реализованы базовые сценарии генерации:

  • DDL-скрипт создается в формате простейших SQL-запросов. Результатом генерации является файл schema.sql. При использовании Spring Data JDBC данный файл автоматически будет подхвачен фреймворком и использован для создания таблиц.
  • создание POJO-классов поддерживает вариативность:
    • модели один к одному с UML-диаграммой, то есть каждое поле класса соответствует полю в модели по типу и имени.
    • представление полей вторичных ключей (Foreign Keys) не как поле с идентификатором связанной сущности, а как полноценный связанный объект.
    • адаптацию под использование со Spring Data JDBC (поддержка специфических аннотаций вроде @Table, @Id, @Column, поддержка интерфейса AggregateReference)
  • поддержка всех основных типов связей сущностей как один к одному, один ко многим, многие ко многим (через таблицу связи).

Дальнейшее развитие предполагает расширение функциональности, улучшение качества генерации и интеграцию с популярными фреймворками (см. Поддерживаемые технологии).

🏁 Начало работы

Перед началом убедитесь, что у вас установлено:

  • JDK версии 8+.
  • Apache Maven.

Взаимодействие с функционалом генерации осуществляется посредством Maven-плагина. Описание конфигурации плагина можно изучить на странице uml-data-model-processor-maven-plugin.

🧐 Примеры использования

Ознакомиться подробнее с генерацией SQL и POJO-классов можно на примере проекта gym-box-example.

🧰 Поддерживаемые технологии

На текущий момент инструмент поддерживает следующий спектр технологий:

  • Базы данных: MySQL, PostgreSQL, SQLite.
  • Языки программирования: Java 11+, Kotlin.
  • Система сборки: Maven, Gradle.
  • Фреймворки: Spring Data JDBC, Spring Data JPA, Hibernate, Kotlin Exposed и др.
  • Системы управления миграциями базы данных: Spring Data JDBC (автоматически выполняет скрипт schema.sql), Liquibase.

🥷 перечеркнутые технологии - задел на развитие проекта

🏆 Контрибьютинг

🙌 Участие в развитии проекта приветствуется!

🗣️ Для обсуждения идей и предложений создаем Issue в GitHub.

⭐ Оцените проект звездочкой, если он вам полезен!

🤝 Поддерживайте проекты открытым исходным кодом!