ORM: использовать или не использовать. Наш опыт

Задача: за короткий период времени создать проект, включающий бэкэнд без сложных запросов к базе данных и фронтенду.

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

Сначала все шло хорошо. Но по мере развития процесса разработки таблицы и связи между ними становились все более сложными. Нам нужна была рука помощи, чтобы заменить повторяющиеся части запросов.

Средний запрос стал выглядеть примерно так, как в примере ниже.

В середине разработки сменили программиста, который занимался бэкендом. Хотя с указанными выше запросами проблем не возникло, нам все же пришлось потратить много времени на то, чтобы разобраться с более сложными. Но поскольку новый программист был хорошо знаком с ORM, мы решили использовать этот подход для административной части приложения.

В результате запросы к db стали такими:

Преимущества, которые мы получили при использовании ORM:

  • поскольку модель хранит связи с таблицами сама по себе, количество строк было уменьшено
  • исчез большой, трудно читаемый и повторяющийся sql-код
  • количество ошибок было значительно уменьшено, соответственно сократилось время на тестирование
  • понимание связей стало более очевидным, так как вся информация хранится в коде и не требует дополнительных команд или программ

Проект был не сильно загружен, поэтому потерь в производительности замечено не было.

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