(Quase) todos os aplicativos se beneficiam do ORM.
Primeiro, não concordo com as vantagens que você lista para o ORM .
- Usar ORM não significa necessariamente que você não precisa conhecer SQL. Um conhecimento de SQL ajudará a entender o que a ferramenta ORM está realmente fazendo, o que é especialmente útil durante a depuração. Além disso, o SQL pode realmente ser necessário para desenvolver consultas complexas que estão além da capacidade do ORM escolhido.
- E, como você diz, a portabilidade raramente é uma preocupação na vida real.
Em vez disso, os benefícios reais do ORM são:
- O ORM economiza tempo do programador porque economiza toneladas de lógica CRUD no SQL
- muitos ORMs incluem lógica de cache complexa etc., difícil de gravar e depurar. Além de economizar tempo, isso pode melhorar a confiabilidade e a capacidade de manutenção do seu aplicativo (ou pelo menos economizar o tempo necessário para obter os mesmos resultados)
- os melhores ORMs têm uma comunidade de usuários que ativamente desenvolvem, mantêm e dão suporte ao produto. A comunidade em torno do SQL personalizado é, na melhor das hipóteses, um pouco menos focada nos problemas que precisamos resolver.
Como você comenta, um lado negativo do ORM é a perda de desempenho. No entanto, isso geralmente pode ser compensado gastando mais hardware.
Normalmente, o tempo do programador é mais caro que o hardware; portanto, o ORM é geralmente uma boa opção, em vez de codificar manualmente o SQL.
O ORM é melhor para aplicações com muita lógica de banco de dados CRUD bastante simples. ORM é menos eficaz para :
- Aplicativos que precisam de pouco / nenhum acesso ao banco de dados.
- Aplicativos que dependem amplamente de consultas complexas e muito pouca lógica CRUD simples
- Situações em que o desempenho é crítico, mas onde não há possibilidade de implantar hardware mais rápido
Na minha experiência, essas situações são raras. Daí a minha resposta.