Antes de falar sobre a questão, faça uma pequena introdução primeiro; Eu amo ORMs. E eu odeio SQL. Adoro ORMs porque eles ocultam a bagunça que o SQL não oferece aos usuários e fornecem uma boa maneira integrada de linguagem de lidar com o banco de dados.
No entanto, tenho que admitir que o SQL tem muitos benefícios, sendo o maior a precisão. Eu posso argumentar sobre a complexidade de uma consulta SQL, sem conhecimento detalhado do esquema de banco de dados subjacente, apenas passando pela consulta. Portanto, quando uso o SQL, estou sempre alerta e sempre tenho uma intuição sobre para onde está indo a complexidade de um componente.
Por outro lado, ao usar ORMs, fico tão impressionado com a facilidade de integração do banco de dados que, literalmente, esqueço que existe um banco de dados. Isso me ferrou várias vezes. Muitas vezes, no passado, chamei métodos ORM de aparência inocente, que nos bastidores chamam junções maciças e assustadoras de bancos de dados, que destroem o desempenho.
É por isso que, para mim, a verdade está em algum lugar no meio. Adoro usar ORMs e continuarei fazendo isso, mas tenho que ter mais cuidado e sempre estudar as implicações (no nível SQL) de qualquer chamada de método ORM. Conhecer as implicações de uma camada de abstração é ouro puro nesse negócio e justifica o uso da abstração. Qualquer outra coisa, é como dar um tiro no próprio pé.