4.10. Подходы к ORM
Разработчику
Аналитику
Тестировщику
Архитектору
Инженеру
Подходы к ORM
При организации работы с ORM, важно понимать ключевые концепции, на основании которых выстраивают взаимодействие между объектной моделью программы и базой данных.
Code First
★ Code First – подход, при котором разработчик сначала создаёт классы (объектную модель) в программе, а ORM автоматически генерирует базу данных на основе этих классов.
ORM анализирует структуру классов, их свойства и отношения, чтобы построить соответствующие таблицы, столбцы и связи.
Вот как это работает:
- разработчик пишет классы, которые представляют сущности (например, User, Product);
- ORM анализирует эти классы и создаёт миграции (скрипты для изменения структуры базы данных);
- база данных обновляется в соответствии с изменениями в коде.
Пример:
Представьте себе веб-приложение для управления задачами (to-do list). Разработчик создаёт класс Task, где:
- свойства: id, title, description, due_date;
- отношения - Task связан с пользователем через класс User.
- ORM автоматически создаёт таблицы Tasks и Users с соответствующими столбцами и внешними ключами.
Это удобно для разработчиков, которые предпочитают работать с кодом. Изменения в классах автоматически отражаются в базе данных через миграции. Однако такой подход может быть сложным для крупных проектов с существующей базой данных.
Database First
★ Database First – подход, при котором база данных создаётся вручную (через SQL или графические инструменты), а ORM генерирует классы на основе существующей структуры базы данных. Разработчик сначала проектирует базу данных, а затем ORM создаёт объектную модель.
Вот как это работает:
- разработчик создаёт базу данных, определяя таблицы, столбцы, индексы и связи;
- ORM анализирует структуру базы данных и генерирует классы, которые отражают эту структуру;
- программист работает с этими классами в своём коде.
Представим себе систему учёта сотрудников в компании. База данных уже существует - там есть таблица Employees (id, name, position, department_id) и таблица Departments (id, name).
ORM анализирует базу данных и создаёт классы Employees и Department, связанные через отношение «один-ко-многим».
Это подходит для проектов с уже существующей базой данных, и предоставляет полный контроль над структурой базы данных. Но изменения в базе данных могут потребовать повторной генерации классов.
Model First
★ Model First – это подход, при котором разработчик сначала создаёт визуальную модель (диаграмму) базы данных, а ORM генерирует как базу данных, так и классы на основе этой модели.
Схема работы:
- разработчик создаёт диаграмму базы данных с помощью инструментов ORM (например, Entity Framework Designer);
- ORM генерирует скрипты для создания базы данных и классы для работы с ней;
- программист использует эти классы в своём коде.
Представим себе систему управления библиотекой.
Разработчик создаёт диаграмму:
- сущность Book: id, title, author_id;
- сущность Author: id, name;
- связь: один автор может иметь много книг.
ORM генерирует базу данных с таблицами Books и Authors, а также классы Book и Author.
Такой подход удобен для начинающих разработчиков, которые предпочитают визуальное проектирование, и обеспечивает лёгкость понимания структуры базы данных благодаря диаграммам.