Comenzaré diciendo que he realizado el 95% del trabajo de mi base de datos usando SQL. Recientemente, hice una investigación de varios ORM, como NHibernate y Doctrine.
Puedo ver las ventajas de no necesitar saber mucho sobre SQL y la portabilidad de la base de datos que proporciona un ORM. Pero también puedo ver que conocer SQL hará que trabajar con un ORM sea más efectivo y solo puedo pensar una vez en mi carrera que el mayor cambio de una aplicación sería el proveedor de la base de datos.
Debido a que me siento muy cómodo escribiendo SQL y aparentemente no me estoy dando cuenta de los beneficios a menudo enseñados de usar un ORM, mi pregunta para los usuarios de ORM es esta:
¿Qué tipo de proyectos de desarrollo web se benefician más del uso de ORM?
Respuestas:
(Casi) todas las aplicaciones se benefician de ORM.
Primero, no estoy de acuerdo con las ventajas que enumera para ORM .
En cambio, los beneficios reales de ORM son:
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 :
En mi experiencia, estas situaciones son raras. De ahí mi respuesta.
fuente
Me siento cómodo escribiendo SQL también. También me siento mucho más cómodo al no tener que escribir ningún SQL en absoluto, y al no preocuparme por conectar, desconectar, agrupar, etc. a una base de datos.
Entonces ... responderé lo negativo de tu pregunta. Los únicos proyectos de desarrollo web que NO se benefician de un ORM son aquellos que no hablan con una base de datos. Que creo que son minoría (si existe).
fuente
Basado en mi experiencia con ASP.NET WebForms, propondría que los proyectos web que usan marcos web con estado sean los más beneficiados al usar un ORM.
Con un marco de estado, el marcado se genera automáticamente detrás de escena, según la jerarquía de los controles activos del servidor. Es tentador hacer que esos controles carguen y persistan su estado automáticamente en la base de datos. Aquí es donde ORM ayuda.
De alguna manera, abstrae el final de la canalización (salida HTML) y, naturalmente, es atractivo tratar con el principio (fuente de datos) de la misma manera para que solo permanezca dentro de la lógica de su negocio en el código de la aplicación.
No es que no esté diciendo que esta es una buena manera de hacer las cosas. Es justo donde ORM encaja naturalmente.
fuente
En aplicaciones donde tiene un modelo de objeto grande y muy conectado, un ORM le evita escribir las mismas combinaciones una y otra vez.
Otro beneficio es la carga diferida, donde desea que una API devuelva un gráfico de objeto donde el cliente de la API solo usará un subconjunto de ese gráfico.
fuente
Creo que estás confundiendo un ORM con un DBAL .
El concepto al que se refiere es una Capa de abstracción de base de datos (DBAL) que le permite escribir "sql" portátil que no depende del sistema de base de datos subyacente.
Un ORM por otro lado (que (¿casi?) Siempre se construye encima de un DBAL):
Object-relational mapping (ORM, O/RM, and O/R mapping) in computer software is a programming technique for converting data between incompatible type systems in object-oriented programming languages. This creates, in effect, a "virtual object database" that can be used from within the programming language.
(Wikipedia)En pocas palabras, un ORM le permite convertir datos de una base de datos plana en una representación de objeto inflado.
fuente
Los proyectos que no se beneficiarían de ORM serían:
fuente