(Quasi) tutte le applicazioni beneficiano di ORM.
Innanzitutto, non sono d'accordo con i vantaggi elencati per ORM .
- L'uso di ORM non significa necessariamente che non è necessario conoscere SQL. Una conoscenza di SQL aiuterà a capire cosa sta facendo lo strumento ORM, che è particolarmente utile durante il debug. Inoltre, SQL potrebbe effettivamente essere richiesto per sviluppare query complesse che vanno oltre la capacità dell'ORM scelto.
- E come dici tu, la portabilità è raramente una preoccupazione nella vita reale.
Al contrario, i vantaggi reali di ORM sono:
-
ORM risparmia il tempo del programmatore perché salva la scrittura di tonnellate di logica CRUD in SQL
- molti ORM includono logica di caching complessa, ecc. che è difficile da scrivere ed eseguire il debug. Oltre a risparmiare tempo, migliora l'affidabilità e la manutenibilità della tua applicazione (o almeno ti risparmia il tempo necessario per ottenere gli stessi risultati)
- i migliori ORM hanno una comunità di utenti che attivamente sviluppano, mantengono e supportano il prodotto. La community attorno all'SQL personalizzato è, nella migliore delle ipotesi, un po 'meno focalizzata sui problemi che dobbiamo risolvere.
Mentre commentate, un lato negativo di ORM è una perdita di prestazioni. Tuttavia, questo di solito può essere compensato spendendo più hardware.
In genere, il tempo del programmatore è più costoso dell'hardware, quindi ORM è generalmente una buona opzione invece di SQL codificante a mano.
ORM è la soluzione migliore per le applciazioni con una logica di database CRUD abbastanza semplice. ORM è meno efficace per :
- Applicazioni che richiedono poco o nessun accesso al database.
- Applicazioni che dipendono in gran parte da query complesse e molto semplice logica CRUD
- Situazioni in cui le prestazioni sono fondamentali, ma dove non esiste la possibilità di implementare hardware più veloce
Nella mia esperienza, queste situazioni sono rare. Quindi la mia risposta.