Antes de hablar sobre la pregunta, primero una pequeña introducción; Me encantan los ORM. Y odio el SQL. Me encantan los ORM porque ocultan el desorden amigable para el usuario que es SQL y proporcionan una buena forma integrada de lenguaje de tratar con la base de datos.
Sin embargo, debo admitir que SQL tiene muchos beneficios, y el más grande es la precisión. Casi puedo discutir sobre la complejidad de una consulta SQL, sin un conocimiento detallado del esquema de la base de datos subyacente, simplemente pasando por la consulta. Por lo tanto, cuando uso SQL, siempre estoy alerta y siempre tengo una intuición sobre hacia dónde se dirige la complejidad de un componente.
Por otro lado, cuando uso ORM, estoy tan abrumado por la facilidad de integración de la base de datos, que literalmente olvido que incluso hay una base de datos. Esto me ha jodido varias veces. Muchas veces en el pasado, he llamado métodos ORM de aspecto inocente, que detrás de escena llaman uniones de bases de datos masivas y aterradoras, que destruyen el rendimiento.
Por eso, para mí, la verdad está en algún punto intermedio. Me encanta usar ORM, y continuaré haciéndolo, pero debo ser más cuidadoso y siempre estudiar las implicaciones (en el nivel SQL) de cualquier llamada al método ORM. Conocer las implicaciones de una capa de abstracción es oro puro en este negocio, y justifica el uso de la abstracción. Cualquier otra cosa, es como dispararte en el pie.