Перейти к основному содержимому

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.

Такой подход удобен для начинающих разработчиков, которые предпочитают визуальное проектирование, и обеспечивает лёгкость понимания структуры базы данных благодаря диаграммам.