Perché utilizzare i metodi per le query del database anziché le query non elaborate?

1

Qual è il motivo alla base della creazione di metodi per le query del database invece di consentire le query non elaborate? per esempio get (...) - > dove (...).

  • Guess1_ Ci stiamo ripetendo diversamente (DRY) --- > Non penso che questa sia una buona ragione perché in questo modo, verrà comunque ripetuta inevitabilmente.
  • Indovina2_ Usando i metodi abbiamo il vantaggio di evitare errori di battitura! --- > Gli errori di battitura potrebbero verificarsi anche con i metodi!
  • Indovina3_ Usando metodi IDE puoi aiutarci a digitare le query più velocemente! --- > Sembra una buona ragione.
  • Guess4_ Sono più leggibili! --- > Un altro buon motivo, ma non sono ancora sicuro del motivo per cui i progettisti hanno preso questa decisione.
  • Indovina5_ Alcune parti delle query potrebbero essere omesse e sostituite da altre associazioni astratte, e in alcuni casi diventano anche più concise, ad esempio: $ books = Book :: selectAll (); (in PHP) --- > Una buona ragione.

Sto cercando di capire il motivo principale per cui i designer hanno preso questa decisione. Penso che le query non elaborate siano molto più flessibili da scrivere! Ad esempio non devi pensare a come "questo esempio di query Q" potrebbe essere scritto usando questi pacchetti di metodi! q () - > g () - > y ( 'D', a_callback_here) - > z ();

Grazie in anticipo.

    
posta Moytaba 16.09.2018 - 20:14
fonte

3 risposte

2

È solo un'astrazione.

A parte la mappatura di base tra oggetti in-code e tabelle di database relazionali, gli obiettivi di un ORM sono:

  • Per astrarre il database dallo sviluppatore. L'idea alla base di un ORM è che qualsiasi sviluppatore che conosce il linguaggio di programmazione può conservare i dati in un database relazionale senza alcuna conoscenza preliminare di SQL. Dato che SQL è piuttosto difficile da imparare, questo è un buon vantaggio.

  • Per poter ottimizzare le query. Le query generate da un ORM non saranno sempre le stesse delle query scritte dagli sviluppatori. A volte uno sviluppatore, se ha competenze sufficienti, scriverebbe una query migliore (cioè più efficiente). A volte, tuttavia, gli ORM farebbero un lavoro migliore. Se prendi un ORM di livello enterprise e un programmatore che ha imparato SQL per meno di un anno, l'ORM farebbe spesso un lavoro molto migliore.

Questi vantaggi non sono rivolti solo ai programmatori principianti. Gli sviluppatori che conoscono abbastanza bene SQL potrebbero comunque trarre vantaggio da un ORM:

  • Non è particolarmente interessante scrivere semplici query SQL a mano e mantenerle in seguito. Perché non lasciare che la macchina faccia il lavoro?
  • A volte, per i casi più complessi, un ORM può avere una soluzione intelligente a un problema in termini di query SQL.
  • Quando un ORM non ha funzionato correttamente, non è un grosso problema; Gli ORM ti consentono di sovrascrivere il loro lavoro con una query SQL personalizzata.
risposta data 16.09.2018 - 20:52
fonte
4

Se scrivi SQL raw ovunque, e lo schema del database cambia (o viene utilizzato un altro database, con caratteristiche diverse), dovresti passare attraverso centinaia o migliaia di pezzi di codice e regolarli, potenzialmente non avendo idea di cosa siano ognuno sta facendo, perché qualcun altro li ha scritti. La maggior parte delle modifiche che fai saranno del 99% uguali, centinaia di volte.

Se hai un metodo, devi solo cambiare il metodo. Fatto.
E sei sicuro di aver catturato tutti i posti.

    
risposta data 17.09.2018 - 00:33
fonte
2

Uno dei potenziali vantaggi dell'utilizzo di tali metodi sarebbe quello di astrarre le differenze tra i dialetti SQL. La stessa query SQL utilizzata su MySQL potrebbe non essere ottimale, o addirittura compatibile con MS SQL, ad esempio. Potenzialmente, potrebbero anche essere utilizzati con database non SQL.

(Ciò detto, anch'io preferisco generalmente anche SQL diretto)

    
risposta data 17.09.2018 - 07:07
fonte

Leggi altre domande sui tag