background image

Tworzenie warstwy 

trwałości danych - 

wprowadzenie

Rafał Kasprzyk

background image

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

background image

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.

background image

Rafał Kasprzyk

Architektura wielowarstwowa

background image

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 

background image

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

background image

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

background image

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ą.

background image

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

background image

Rafał Kasprzyk

Poziomy ORM

Pure relational

Light object mapping

Medium object mapping

Full object mapping

background image

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

background image

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ść

background image

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ń

background image

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.

background image

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

background image

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

background image

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

background image

Rafał Kasprzyk

Podsumowanie

Architektura wielowarstwowa

Konstrukcja warstwy integracji

Idea ORM

Problemy ORM

Zalety ORM


Document Outline