introduzione
Object-Relational Mapping (ORM) è una tecnica che consente di eseguire query e manipolare i dati da un database utilizzando un paradigma orientato agli oggetti. Quando si parla di ORM, la maggior parte delle persone si riferisce a una libreria che implementa la tecnica Mappatura relazionale oggetto, da cui la frase "un ORM".
Una libreria ORM è una libreria completamente ordinaria scritta nella tua lingua preferita che incapsula il codice necessario per manipolare i dati, quindi non usi più SQL; interagisci direttamente con un oggetto nella stessa lingua che stai utilizzando.
Ad esempio, ecco un caso completamente immaginario con un linguaggio pseudo:
Hai una lezione di libri, vuoi recuperare tutti i libri di cui l'autore è "Linus". Manualmente, faresti qualcosa del genere:
book_list = new List();
sql = "SELECT book FROM library WHERE author = 'Linus'";
data = query(sql); // I over simplify ...
while (row = data.next())
{
book = new Book();
book.setAuthor(row.get('author');
book_list.add(book);
}
Con una libreria ORM, sarebbe simile al seguente:
book_list = BookTable.query(author="Linus");
La parte meccanica viene curata automaticamente tramite la libreria ORM.
Pro e contro
L'uso di ORM consente di risparmiare molto tempo perché:
- ASCIUTTO : scrivi il tuo modello di dati in un solo posto ed è più facile aggiornare, mantenere e riutilizzare il codice.
- Molte cose vengono eseguite automaticamente, dalla gestione del database a I18N .
- Ti costringe a scrivere codice MVC , che, alla fine, rende il tuo codice un po 'più pulito.
- Non è necessario scrivere SQL scarsamente formato (la maggior parte dei programmatori Web fa davvero schifo, perché SQL viene trattato come un linguaggio "secondario", quando in realtà è un linguaggio molto potente e complesso).
- sanificazione; usare estratti conto o transazioni preparati è facile come chiamare un metodo.
L'uso di una libreria ORM è più flessibile perché:
- Si adatta al tuo modo naturale di codificare (è la tua lingua!).
- Estrae il sistema DB, quindi puoi cambiarlo quando vuoi.
- Il modello è debolmente associato al resto dell'applicazione, quindi è possibile modificarlo o utilizzarlo in qualsiasi altro luogo.
- Ti consente di utilizzare la bontà OOP come l'ereditarietà dei dati senza mal di testa.
Ma ORM può essere un dolore:
- Devi impararlo e le librerie ORM non sono strumenti leggeri;
- Devi impostarlo. Stesso problema.
- Le prestazioni sono OK per le normali query, ma un master SQL farà sempre meglio con il proprio SQL per grandi progetti.
- Estrae il DB. Mentre va bene se sai cosa sta succedendo dietro la scena, è una trappola per i nuovi programmatori che possono scrivere dichiarazioni molto avide, come un duro colpo in un
for
ciclo.
Come conoscere ORM?
Bene, usane uno. Qualunque libreria ORM scegliate, usano tutti gli stessi principi. Ci sono molte librerie ORM qui intorno:
Se si desidera provare una libreria ORM nella programmazione Web, sarebbe meglio usare un intero stack di framework come:
- Symfony (PHP, usando Propel o Doctrine).
- Django (Python, usando un ORM interno).
Non provare a scrivere il tuo ORM, a meno che tu non stia cercando di imparare qualcosa. Questo è un lavoro gigantesco, e i vecchi hanno impiegato molto tempo e lavoro prima di diventare affidabili.