← Назад в словарь

ORM

ORM (Object-Relational Mapping) — объектно-реляционное отображение

Суть в одном предложении

ORM — это способ представления данных из реляционной базы в виде объектов языка программирования.

Краткое определение

ORM (Object-Relational Mapping) — архитектурный паттерн, который связывает таблицы реляционной базы данных с объектной моделью приложения и позволяет работать с данными через классы и методы вместо прямых SQL-запросов.

Оригинал и перевод

  • Язык: английский
  • Оригинал: Object-Relational Mapping
  • Буквальный перевод: объектно-реляционное отображение

Синонимы и варианты написания

  • Object Relational Mapper
  • ORM-слой
  • Data Mapper (в частном случае)

Происхождение

Проблема возникла из-за различия между объектной моделью приложений и реляционной моделью баз данных.
ORM появился как способ устранить так называемое «объектно-реляционное несоответствие» (impedance mismatch).

Где используется

  • Backend-фреймворки
  • Data layer приложений
  • Enterprise-системы
  • CMS и e-commerce платформы
  • API-сервисы

Когда это важно

ORM критичен, когда:

  • проект имеет сложную доменную модель
  • требуется абстракция над СУБД
  • необходимо ускорить разработку
  • нужно поддерживать переносимость между БД
  • важна структурированная работа с сущностями

Подробное объяснение

Реляционная база хранит данные в таблицах.
Приложение работает с объектами.

ORM создаёт соответствие:

  • таблица → класс
  • строка → объект
  • колонка → свойство
  • связь таблиц → ассоциация объектов

Пример концепции:

Таблица users
→ Класс User
→ Объект $user

Вместо:

SELECT * FROM users WHERE id = 1;

Используется:

$user = User::find(1);

ORM берёт на себя:

  • генерацию SQL
  • маппинг результатов
  • работу со связями
  • lazy / eager loading
  • транзакции
  • валидацию данных (в некоторых реализациях)

Основные подходы к ORM

  1. Active Record — логика работы с БД внутри модели
  2. Data Mapper — отдельный слой маппинга
  3. Query Builder — промежуточный уровень абстракции

Преимущества

  • ускорение разработки
  • единая объектная модель
  • читаемость кода
  • меньше шаблонного SQL
  • переносимость между СУБД

Ограничения

  • сложные запросы могут работать медленно
  • возможны N+1 проблемы
  • избыточная абстракция
  • потеря контроля над оптимизацией
  • не всегда подходит для высоконагруженных систем

ORM ≠ отсутствие SQL

В production-проектах часто используется гибрид: ORM для стандартной логики SQL для сложных или критичных запросов.

Аналоги и связанные термины

  • Data Mapper
  • Active Record
  • Repository
  • Query Builder
  • N+1 problem

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

«Модель User в Bitrix или Laravel использует ORM для получения данных из таблицы пользователей.»

Мини-FAQ

  • Можно ли полностью отказаться от SQL при использовании ORM? Нет. Понимание SQL остаётся обязательным.

  • ORM ускоряет выполнение запросов? Не всегда. Он ускоряет разработку, но может усложнять оптимизацию.

  • Подходит ли ORM для highload-систем? Да, при грамотном использовании и профилировании.