Prima di parlare della domanda, prima una piccola introduzione; Amo gli ORM. E odio SQL. Adoro gli ORM perché nascondono il disordine ostile dell'utente che è SQL e forniscono un bel modo integrato di gestire il database con il linguaggio.
Tuttavia devo ammettere che SQL ha molti vantaggi, e quello più grande è la precisione. Posso discutere sulla complessità di una query SQL, senza una conoscenza dettagliata dello schema del database sottostante, semplicemente passando attraverso la query. Pertanto, quando uso SQL, sono sempre attento e ho sempre intuito su dove si stia dirigendo la complessità di un componente.
D'altro canto, quando si usano gli ORM, sono così sopraffatto dalla facilità di integrazione del database, che dimentico letteralmente che esiste persino un database. Questo mi ha fregato più volte. Molte volte in passato, ho chiamato i metodi ORM dall'aspetto innocente, che dietro le quinte chiamano enormi e spaventosi join di database, che distruggono le prestazioni.
Ecco perché per me la verità è una via di mezzo. Mi piace usare gli ORM e continuerò a farlo, ma devo essere più attento e studiare sempre le implicazioni (a livello SQL) di qualsiasi chiamata al metodo ORM. Conoscere le implicazioni di uno strato di astrazione è oro puro in questo business e giustificare l'uso dell'astrazione. Qualcos'altro, è come spararsi sul piede.