Ktoś zasugerował, że używam ORM do projektu, który projektuję, ale mam problem ze znalezieniem informacji o tym, co to jest lub jak działa.
Czy ktoś może mi krótko wyjaśnić, czym jest ORM i jak działa i jak powinienem zacząć z niego korzystać?
Ktoś zasugerował, że używam ORM do projektu, który projektuję, ale mam problem ze znalezieniem informacji o tym, co to jest lub jak działa.
Czy ktoś może mi krótko wyjaśnić, czym jest ORM i jak działa i jak powinienem zacząć z niego korzystać?
Odpowiedzi:
Mapowanie obiektowo-relacyjne (ORM) to technika, która pozwala na zapytania i manipulowanie danymi z bazy danych przy użyciu paradygmatu obiektowego. Mówiąc o ORM, większość ludzi odnosi się do biblioteki, która implementuje technikę mapowania obiektowo-relacyjnego, stąd wyrażenie „ORM”.
Biblioteka ORM to całkowicie zwykła biblioteka napisana w wybranym języku, która zawiera kod potrzebny do manipulowania danymi, więc nie używasz już SQL; wchodzisz w interakcję bezpośrednio z obiektem w tym samym języku, którego używasz.
Na przykład tutaj jest całkowicie wyimaginowany przypadek z pseudo-językiem:
Masz klasę książek, chcesz odzyskać wszystkie książki, których autorem jest „Linus”. Ręcznie zrobiłbyś coś takiego:
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);
}
W przypadku biblioteki ORM wyglądałoby to tak:
book_list = BookTable.query(author="Linus");
Część mechaniczna jest obsługiwana automatycznie przez bibliotekę ORM.
Używanie ORM oszczędza dużo czasu, ponieważ:
Korzystanie z biblioteki ORM jest bardziej elastyczne, ponieważ:
Ale ORM może być bólem:
for
pętlę.Cóż, użyj jednego. Niezależnie od tego, którą bibliotekę ORM wybierzesz, wszystkie one wykorzystują te same zasady. W okolicy jest wiele bibliotek ORM:
Jeśli chcesz wypróbować bibliotekę ORM w programowaniu internetowym, lepiej byłoby użyć całego stosu frameworka, takiego jak:
Nie próbuj pisać własnych ORM, chyba że próbujesz się czegoś nauczyć. To gigantyczne dzieło, a stare wymagały dużo czasu i pracy, zanim stały się wiarygodne.
Czy ktoś może dać mi krótkie wyjaśnienie ...
Pewnie.
ORM oznacza „Object to Relational Mapping”, gdzie
Część Object to ta, której używasz w swoim języku programowania (w tym przypadku python)
Część relacyjna to Relational Database Manager System (baza danych) Istnieją inne typy baz danych, ale najbardziej popularna jest relacyjna (znasz tabele, kolumny, pk fk itp. Np. Oracle MySQL, MS-SQL)
I wreszcie część Odwzorowanie to miejsce, w którym wykonujesz pomost między swoimi obiektami a stołami.
W aplikacjach, w których nie używasz frameworku ORM, robisz to ręcznie. Użycie frameworka ORM pozwoliłoby zredukować płytę kotłową potrzebną do stworzenia rozwiązania.
Powiedzmy, że masz ten obiekt.
class Employee:
def __init__( self, name ):
self.__name = name
def getName( self ):
return self.__name
#etc.
i stół
create table employee(
name varcar(10),
-- etc
)
Użycie frameworka ORM pozwoliłoby na automatyczne zmapowanie tego obiektu za pomocą rekordu db i napisanie czegoś takiego:
emp = Employee("Ryan")
orm.save( emp )
I niech pracownik wstawi do DB.
Ups, to nie było takie krótkie, ale mam nadzieję, że wystarczy, aby złapać inne artykuły, które czytasz.
ORM (Object Relational Mapper) to element / warstwa oprogramowania, które pomaga mapować obiekty kodu do bazy danych.
Niektóre obsługują więcej aspektów niż inne ... ale celem jest odebranie części ciężaru warstwy danych z barków programisty.
Oto krótki klip od Martina Fowlera (Data Mapper):
Wzorce mapowania danych architektury aplikacji korporacyjnych
Jak wszystkie akronimy, jest niejednoznaczny, ale zakładam, że mają na myśli mapowanie obiektowo-relacyjne - sposób na zakrycie oczu i uwierzenie, że pod spodem nie ma SQL, a raczej wszystkie obiekty ;-). Oczywiście niezupełnie prawda i nie bez problemów - zawsze kolorowy Jeff Atwood opisał ORM jako Wietnam CS ;-). Ale jeśli znasz mało SQL lub nie znasz go i masz dość prosty problem na małą skalę, mogą Ci zaoszczędzić czas! -)
Model obiektowy dotyczy trzech następujących pojęć Abstrakcja danych Dziedziczenie w enkapsulacji W modelu relacyjnym zastosowano podstawowe pojęcie relacji lub tabeli. Produkty mapowania obiektowo-relacyjnego (OR mapping) integrują możliwości języka programowania obiektowego z relacyjnymi bazami danych.