(Почти) все приложения получают выгоду от ORM.
Во-первых, я не согласен с перечисленными вами преимуществами для ORM .
- Использование ORM не обязательно означает, что вам не нужно знать SQL. Знание SQL поможет понять, что на самом деле делает инструмент ORM, что особенно полезно при отладке. Более того, SQL может фактически потребоваться для разработки сложных запросов, выходящих за пределы возможностей выбранного вами ORM.
- И, как вы говорите, портативность редко вызывает беспокойство в реальной жизни.
Вместо этого настоящие преимущества ORM:
- ORM экономит время программиста, потому что он экономит на написании тонны CRUD-логики в SQL
- многие ORM содержат сложную логику кеширования и т. д., которые сложно написать и отладить. Помимо экономии времени это может повысить надежность и удобство обслуживания вашего приложения (или, по крайней мере, сэкономить время, которое потребуется для достижения тех же результатов)
- У лучших ORM есть сообщество пользователей, которые активно разрабатывают, поддерживают и поддерживают продукт. Сообщество вокруг пользовательского SQL в лучшем случае несколько менее сосредоточено на проблемах, которые нам нужно решить.
Как вы прокомментируете, один недостаток ORM - это потеря производительности. Однако это обычно можно компенсировать, потратив больше оборудования.
Как правило, время программиста дороже, чем аппаратное обеспечение, поэтому ORM - это вообще хороший вариант вместо ручного кодирования SQL.
ORM лучше всего подходит для приложений с довольно простой логикой базы данных CRUD. ORM менее эффективен для :
- Приложения, которые нуждаются в небольшом / нулевом доступе к базе данных.
- Приложения, которые в значительной степени зависят от сложных запросов и очень мало простой CRUD-логики
- Ситуации, когда производительность критична, но нет возможности развернуть более быстрое оборудование
По моему опыту, такие ситуации редки. Отсюда и мой ответ.