Tworzenie warstwy
trwałości danych -
wprowadzenie
Rafał Kasprzyk
Rafał Kasprzyk
Problem trwałości danych
Praktycznie każdy tworzony system
informatyczny korzysta z bazy danych
Tradycyjnie dane przechowywane są w
relacyjnych systemach baz danych
Większość aktualnie powstających
aplikacji implementowanych jest w
językach obiektowych
Powstaje problem polegający na
umożliwieniu utrwalania stanu obiektu
w bazie relacyjnej
Problem jest rozwiązywany poprzez
konstrukcje efektywnej warstwy integracji
Rafał Kasprzyk
Czym jest warstwa integracji
Warstwa integracji odpowiada za
komunikację z systemami
zewnętrznymi i źródłami danych:
aplikacjami zewnętrznymi (ang. legacy
applications)
bazami danych
Warstwa biznesowa wykorzystuje
warstwę integracji, gdy obiekt
biznesowy:
musi zostać utrwalony
potrzebuje danych znajdujących się w
warstwie danych.
Rafał Kasprzyk
Architektura wielowarstwowa
Rafał Kasprzyk
Technologie warstwy integracji
Java I/O API
JDBC (ang. Java Database
Connectivity)
SQLJ
JSTL SQL
EJB (ang. Enterprise Java Beans)
JDO (ang. Java Data Objects)
iBATIS SqlMaps
Oracle TopLink
Hibernate
Inne
Rafał Kasprzyk
Konstrukcja warstwy integracji
Stare podejście – aplikacja
komunikuje się z bazą danych
korzystając z języka SQL i JDBC
Występuje niezgodność implementacji
Konieczność transformacji struktur
obiektowych do relacyjnych przy
zapisie/odczycie i vice versa
Rafał Kasprzyk
Konstrukcja warstwy integracji
Obiektowość we wszystkich
warstwach
Aplikacja zaimplementowana w
obiektowym języku programowania
Obiektowy system bazy danych
Koncepcja obiektowości we
wszystkich warstwach jest kusząca,
ale obecnie nie do zrealizowania
Rafał Kasprzyk
Konstrukcja warstwy integracji
Nowe podejście – aplikacja
komunikuje się z warstwą trwałych
obiektów odwzorowujących
zawartość relacyjnej bazy danych
Język SQL i JDBC są całkowicie
wyeliminowane z aplikacji
Model relacyjny jest ukryty przed
aplikacją.
Rafał Kasprzyk
Idea ORM (ang. Object-
Relational Mapping)
Na obiektowość we wszystkich
warstwach (w szczególności w
warstwie danych)
dla istniejących rozwiązań jest już za
późno
dla nowych systemów jest jeszcze za
wcześnie
Rozwiązaniem tego problemu może
być oczywiście warstwa pośrednia
rozwiązanie każdego problemu
informatyki
Rafał Kasprzyk
Poziomy ORM
Pure relational
Light object mapping
Medium object mapping
Full object mapping
Rafał Kasprzyk
Tożsamość obiektu
Tożsamość jest kluczowym
zagadnieniem mapowania obiektowo-
relacyjnego
Tożsamość pozwala związać obiekt
znajdujący się w pamięci JVM z jego
reprezentacją w bazie danych
Tożsamość na poziomie obiektowym
Obiekty są tożsame, jeżeli są dostępne
pod tym samym adresem w pamięci JVM
Tożsamość na poziomie bazy relacyjnej
Obiekty utrwalane są tożsame jeżeli
reprezentują tą samą krotkę, co oznacza,
że współdzielą wartość klucza głównego
Rafał Kasprzyk
Tożsamość obiektu
Mechanizm ORM zapewnia, że w
ramach sesji w pamięci może istnieć
tylko jedna instancja obiektu
trwałego
Nawet jeżeli dany obiekt jest zwracany
kilkakrotnie jako wynik zapytania do
bazy
Cecha ta określana jest jako
unikalność
unikalność
Rafał Kasprzyk
Znane problemy ORM
Jedna z ważniejszych różnic pomiędzy
modelem obiektowym i relacyjnym to
sposób reprezentacji związków
W modelu relacyjnym związki są reprezentowane
przez klucze obce w encjach podrzędnych
Najczęściej występujące związki to: 1-N i N-N
W modelu obiektowym związki maja bardziej
naturalna postać
Przyjmują postać referencji na encję bądź referencję na
kolekcje encji (asocjacja, agregacja, kompozycja)
Dziedziczenie
Nawigowanie po grafie obiektów jest dużo
wygodniejsze niż pomiędzy tabelami
Możliwe jest przechodzenie z encji podrzędnej do
nadrzędnej i na odwrót, bez konieczności
zadawania skomplikowanych zapytań
Rafał Kasprzyk
Znane problemy ORM
Synchronizacja danych pomiędzy
tabelą w relacyjnej bazy danych, a
obiektem Javy
Definicja klasy, nie uwalnia nas od
wysiłku związanego z definicją
odpowiednich pól tabeli.
W przypadku zmiany modelu
obiektowego, zmianie musi ulec
również struktura bazy.
Spadek wydajności aplikacji
Każda operacja SQL powoduje
dodatkowy narzut czasu. Można nieco
poprawić tą sytuację stosując
buforowanie.
Rafał Kasprzyk
Znane zalety ORM
Produktywność
unikniecie konieczności tworzenia kodu
obsługującego bazę danych
Łatwość pielęgnacji aplikacji
mniej kodu, duża elastyczność
Wydajność
Przy założeniu ograniczonego czasu i
budżetu na zbudowanie i optymalizację
aplikacji
Rafał Kasprzyk
Znane zalety ORM
Niezależność od konkretnego silnika
bazy danych (najczęściej)
Technologie ORM największe
korzyści przynoszą w aplikacjach
pracujących na złożonym modelu
obiektowym
Asocjacje
Agregacje
Kompozycje
Dziedziczenie
Polimorfizm
Kolekcje
Rafał Kasprzyk
Podstawowe elementy ORM
Wygodny interfejs do wykonywania operacji
CRUD na trwałych obiektach
Język lub interfejs umożliwiający
wykonywanie zapytań odwołujących się do
klas trwałych i ich atrybutów
Mechanizm specyfikowania metadanych
opisujących sposób odwzorowywania klas na
relacje (tabele) w bazie danych i związków
między klasami na związki między tabelami
Techniki poprawiające wydajność
komunikacji z bazą danych
Wykrywanie zmian w trwałych obiektach
Różne sposoby pobierania obiektów powiązanych
…
Rafał Kasprzyk
Podsumowanie
Architektura wielowarstwowa
Konstrukcja warstwy integracji
Idea ORM
Problemy ORM
Zalety ORM