Cineva a sugerat sa folosesc un ORM pentru un proiect pe care eu'm de proiectare, dar am'm având probleme în a găsi informații cu privire la ce este sau cum funcționează.
Poate cineva sa-mi dea o scurtă explicație a ceea ce o ORM este și cum funcționează acesta și cum ar trebui să începeți să utilizați unul?
Object-Relational Mapping (ORM) este o tehnica care vă permite să interogare și manipula datele dintr-o bază de date folosind un obiect-orientate paradigmă. Atunci când vorbim despre ORM, majoritatea oamenilor se referă la o biblioteca care implementează Object-Relational Mapping tehnica, prin urmare, expresia "ORM".
O ORM biblioteca este o bibliotecă obișnuită scris în limba dvs. de a alege care încapsulează codul necesar pentru a manipula datele, astfel încât să don't de a folosi SQL mai; interacționează direct cu un obiect în aceeași limbă-ai're folosind.
De exemplu, aici este un caz imaginar, cu un pseudo-limbaj:
Aveți o carte de clasa, doriți să preluați toate cărțile al căror autor este "Linus". Manual, v-ar face ceva de genul asta:
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);
}
Cu un ORM bibliotecă, acesta ar arata astfel:
book_list = BookTable.query(author="Linus");
Partea mecanică este luate de îngrijire în mod automat prin intermediul ORM bibliotecă.
Folosind ORM salvează o mulțime de timp, deoarece:
Folosind o bibliotecă ORM este mult mai flexibil, deoarece:
Dar ORM poate fi o durere:
Ei bine, folosește-o. Indiferent ORM biblioteca ai alege, toate folosesc aceleași principii. Există o mulțime de ORM bibliotecile de aici:
Dacă doriți să încercați o bibliotecă ORM în programare Web, ai'd fi mai bine folosind un întreg cadru de stivă, cum ar fi:
Nu încercați să scrie propriile ORM, dacă sunteți încercarea de a învăța ceva. Aceasta este o bucată uriașă de muncă, iar cele vechi au luat o mulțime de timp și de muncă înainte de ei au devenit adevarate.
Poate cineva sa-mi dea o scurtă explicație...
Sigur.
ORM standuri pentru "Obiect Relational Mapping" în cazul în care
A ** Obiect parte este cea pe care o utilizați cu limbaj de programare ( python, în acest caz )
A Relaționale parte este o bază de Date Relațională Manager Sistem ( baza de date ) există și alte tipuri de baze de date, dar cel mai popular este relațională ( stii tabele, coloane, pk fk etc de exemplu, Oracle, MySQL, MS-SQL )
Și în cele din urmă Cartografiere parte este în cazul în care vă face o punte de legătură între obiecte și tabele.
În aplicații în cazul în care nu't folosi un framework ORM puteți face acest lucru de mână. Utilizarea unui ORM-cadru ar permite o faci reduce șabloane necesare pentru a crea o soluție.
Deci sa's spun că au acest obiect.
class Employee:
def __init__( self, name ):
self.__name = name
def getName( self ):
return self.__name
#etc.
și masă
create table employee(
name varcar(10),
-- etc
)
Utilizarea unui ORM-cadru ar permite să hartă acel obiect cu un db record mod automat și de a scrie ceva de genul:
emp = Employee("Ryan")
orm.save( emp )
Și-au angajat introdus în DB.
Hopa ca nu a fost asa scurt dar sper că este destul de simplu pentru a prinde alte articole ai citit.
ORM (Object Relational Mapper) este o bucată/strat de software care vă ajută hartă codul de Obiecte a bazei dumneavoastră de date.
Unele se ocupe de mai multe aspecte decât alții, dar scopul este de a lua unele dintre greutatea Stratului de Date de la dezvoltator's umeri.
Aici's un scurt clip de la Martin Fowler (Date Mapper):
Modele de Enterprise Application Architecture Date Cartografi
Ca toate acronimele l's ambiguu, dar presupun că se referă la obiect-relaționale mapper ... o modalitate de a-ți acoperi ochii și să cred că's nu SQL dedesubt, dar mai degrabă l's toate obiectele;-). Nu-i adevărat, desigur, și nu fără probleme ... mereu colorate Jeff Atwood a descris ORM cât Vietnam CS;-). Dar, dacă știi puțin sau deloc SQL, și au o destul de simplu / scară mică problemă, ei pot economisi timp!-)
Modelul de obiect este în cauză cu următoarele trei concepte Date De Abstractizare Încapsulare Moștenirea În modelul relațional folosit conceptul de bază de o relație sau de masă. Object-relational mapping (SAU de cartografiere) produse integra obiect limbaj de programare capacitățile cu baze de date relaționale.