Wprowadzenie do ORM
Aplikacje komputerowe bardzo często korzystają z systemów baz danych do przechowywania informacji. Bazy danych pozwalają na trwałe przechowywanie dużej ilości danych (np. łańcuchy tekstowe, wartości liczbowe, daty, oraz pliki binarne: filmy lub grafika). Dodatkowym atutem jest możliwość bardzo szybkiego operowania na dużej ilości danych (wyszukiwanie, sortowanie, dodawanie, usuwanie, zabezpieczenie przed usuwaniem). Wszystkie wyżej wymienione cechy są niedostępne lub trudne do osiągnięcia poprzez typowe aplikacje. Dlatego tak często korzystają one z baz danych. Komunikacja pomiędzy tymi dwoma warstwami odbywa się za pośrednictwem odpowiednich protokołów, w przypadku technologii .NET jest to ADO.NET. Za każdym razem, kiedy program potrzebuje informacji przechowywanych w bazie danych, programista musi wykonać szereg instrukcji, które można podzielić na następujące etapy:
  • nawiązanie połączenia z bazą, poprzez podanie: typu bazy danych, adresu IP (lub domeny), nazwy użytkownika oraz hasła,
  • wysłanie zapytania SQL, np. SELECT * FROM Students
  • odebranie wyniku, najczęściej jest to tablica obiektów,
  • zamknięcie połączenia z bazą danych;
Pociąga to za sobą następujące niedogodności:
  • podczas kompilacji programu, poprawność zapytań SQL nie jest sprawdzana,
  • zmiany w strukturze bazy danych wymuszają zmiany w kodzie aplikacji np. zmiana nazwy tabeli wymusza zmianę wszystkich zapytań operujących na tej tabeli,
  • w przypadku zmiany dostawcy bazy danych np. z SQL Server na Oracle, część zapytań będzie nieprawidłowa,
  • powtarzanie tego samego bloku kodu nie jest dobrym zwyczajem w programowaniu obiektowym;
Przedstawione powyżej trudności spowodowały wprowadzenie mechanizmu, określonego terminem ORM.
ORM (ang. Object – Relational Mapping) jest to termin określający technologię tworzącą pomost pomiędzy bazą danych a aplikacją komputerową. Zadaniem tej technologii jest odciążenie programisty od pracy nad bazą danych. Cała komunikacja odbywa się automatycznie przy udziale technologii ORM. W skrajnych przypadkach nie jest wymagana nawet znajomość zapytań SQL, ponieważ programista operuje tylko na obiektach odwzorowujących strukturę tabel.
Zalety oraz wady technologii ORM
Technologia ORM posiada następujące zalety:
  • posiada mechanizmy ang. cache oraz skomplikowane algorytmy optymalizujące, co pozytywnie wpływa na wydajność,
  • operacje na bazie danych są przeprowadzane za pomocą programowania obiektowego, które pozwala miedzy innymi na dziedziczenie, czego zazwyczaj nie oferuje architektura bazy danych,
  • tworząc aplikacje można bardziej skupić się nad logiką biznesową, oraz nad tym co powinny reprezentować sobą klasy, i dopiero na tej podstawie narzędziem ORM stworzyć strukturę bazy danych,
  • typowe zapytania SQL można zredukować do minimum, lub całkowicie wyeliminować,
  • wszelkie poprawki w logice biznesowej są na bieżąco synchronizowane z bazą danych bez interwencji programisty, co znacznie wpływa na komfort oraz efektywność pracy;
Technologia ORM posiada także cechy negatywne:
  • oczywiście wprowadza pewien narzut (opóźnienia w transmisji informacji), ponieważ tworzy dodatkową warstwę przez którą muszą być przesłane dane,
  • pomimo zaawansowanych algorytmów trudno jest otrzymać zaawansowane zapytania SQL, w zoptymalizowanej formie np. wielokrotnie zagnieżdżone, skorelowane zapytania,
  • nie nadaje się do obróbki dużych ilości danych gdzie wydajność jest podstawowym priorytetem;
Podsumowanie
Technologia ORM znacznie przyśpiesza proces tworzenia i modyfikacji aplikacji. Można ją z powodzeniem stosować w projektach z niezbyt skomplikowaną strukturą baz danych. Przy bardziej skomplikowanej strukturze bazy lub w wypadku dużej ilości danych, należy dokładnie się zastanowić nad wdrożeniem ORM i poprzedzić to odpowiednimi testami.
Literatura