ORM: использовать или не использовать. Наш опыт
Задача: за короткий период времени создать проект, включающий бэкэнд без сложных запросов к базе данных и фронтенду.
Для внешнего интерфейса у нас уже был аналогичный шаблон, взятый из старого проекта. Бэкэнд был на Node.js и не имел такого шаблона, и, поскольку сроки были жесткими, мы решили не вводить миграцию и ORM для работы с базой данных, так как их изучение потребует дополнительного времени.
Сначала все шло хорошо. Но по мере развития процесса разработки таблицы и связи между ними становились все более сложными. Нам нужна была рука помощи, чтобы заменить повторяющиеся части запросов.
Средний запрос стал выглядеть примерно так, как в примере ниже.
В середине разработки сменили программиста, который занимался бэкендом. Хотя с указанными выше запросами проблем не возникло, нам все же пришлось потратить много времени на то, чтобы разобраться с более сложными. Но поскольку новый программист был хорошо знаком с ORM, мы решили использовать этот подход для административной части приложения.
В результате запросы к db стали такими:
Преимущества, которые мы получили при использовании ORM:
- поскольку модель хранит связи с таблицами сама по себе, количество строк было уменьшено
- исчез большой, трудно читаемый и повторяющийся sql-код
- количество ошибок было значительно уменьшено, соответственно сократилось время на тестирование
- понимание связей стало более очевидным, так как вся информация хранится в коде и не требует дополнительных команд или программ
Проект был не сильно загружен, поэтому потерь в производительности замечено не было.
В результате использование ORM сократило время разработки, код стал чище и понятнее. Время, потраченное на изучение особенностей ORM, стоило тех преимуществ, которые мы получили от его использования.