(Casi) todas las aplicaciones se benefician de ORM.
Primero, no estoy de acuerdo con las ventajas que enumera para ORM .
- Usar ORM no necesariamente significa que no necesita saber SQL. El conocimiento de SQL ayudará a comprender qué está haciendo realmente la herramienta ORM, lo que es especialmente útil durante la depuración. Además, es posible que se requiera SQL para desarrollar consultas complejas que están más allá de la capacidad de su ORM elegido.
- Y como usted dice, la portabilidad rara vez es una preocupación en la vida real.
En cambio, los beneficios reales de ORM son:
- ORM ahorra tiempo al programador porque ahorra escribir toneladas de lógica CRUD en SQL
- muchos ORM incluyen lógica de almacenamiento en caché compleja, etc. que es difícil de escribir y depurar. Además de ahorrar tiempo, esto puede mejorar la confiabilidad y la facilidad de mantenimiento de su aplicación (o al menos ahorrarle el tiempo que le tomaría lograr los mismos resultados)
- Los mejores ORM tienen una comunidad de usuarios que desarrollan, mantienen y respaldan activamente el producto. La comunidad en torno al SQL personalizado está, en el mejor de los casos, algo menos enfocada en los problemas que necesitamos resolver.
Como comenta, una desventaja de ORM es la pérdida de rendimiento. Sin embargo, esto generalmente se puede compensar gastando más hardware.
Por lo general, el tiempo del programador es más costoso que el hardware, por lo que ORM es generalmente una buena opción en lugar de codificar manualmente SQL.
ORM es mejor para aplicaciones con mucha lógica de base de datos CRUD bastante simple. ORM es menos efectivo para :
- Aplicaciones que necesitan poco o ningún acceso a la base de datos.
- Aplicaciones que dependen en gran medida de consultas complejas y muy poca lógica CRUD simple
- Situaciones donde el rendimiento es crítico, pero donde no hay posibilidad de implementar hardware más rápido
En mi experiencia, estas situaciones son raras. De ahí mi respuesta.