Programowanie obiektowe Wykład 13 Marcin Młotkowski 27 maja 2015
Plan wykładu Trwałość obiektów 1 Trwałość obiektów 2 Marcin Młotkowski Programowanie obiektowe 2 / 29
Trwałość (persistence) Definicja Cecha danej, zmiennej lub obiektu oznaczająca zachowanie jej wartości dłużej niż czas pojedynczego uruchomienia programu. Marcin Młotkowski Programowanie obiektowe 3 / 29
Przechowywanie stanu w BD Aplikacja Baza danych Definicje klas Implementacje metod Zapis stanu Stan obiektów Odczyt stanu Marcin Młotkowski Programowanie obiektowe 4 / 29
Scenariusz użycia trwałego obiektu Odczyt obiektu (stanu obiektu z bd) Modyfikacja stanu Wywołanie metod obiektu Zapis Marcin Młotkowski Programowanie obiektowe 5 / 29
Zagadnienia Trwałość obiektów Zwykle przechowywany jest stan obiektu a nie obiekt (tj. klasa, nadklasa, metody itp) Gorliwe czy leniwe aktualizacje (odczyt/zapis) stanu Mechanizm aktualizacji zmian (dodawanie nowych pól, zmiana typów pól w nadklasie etc) Pytanie: jaka część stanu powinna być przechowywana? Marcin Młotkowski Programowanie obiektowe 6 / 29
Naturalne podejście Trwałość obiektów Połączenie aplikacji obiektowej z istniejącym systemem baz danych Rozszerzenie środowiska obiektowego o możliwości przetwarzania dużych danych Zbudowanie całego środowiska od początku Rozszerzenie systemu BD o właściwości obiektowe Marcin Młotkowski Programowanie obiektowe 7 / 29
Łączenie środowiska obiektowego z systemem baz danych Środowiska obiektowe: JAVA, C#, C++, Python... Systemy baz danych: MySQL, Oracle, PostgreSQL, Sybase, Microsoft SQL Server... Marcin Młotkowski Programowanie obiektowe 8 / 29
Strategia implementacji Odwzorowanie cech obiektowych w relacyjnych bazach danych (object-relational mapping, ORM) Implementacja warstwy pośredniej Marcin Młotkowski Programowanie obiektowe 9 / 29
Porównanie modelu relacyjnego z obiekowym Model obiektowy Ukrywanie danych i dostęp tylko przez wskazany interfejs Relacje między obiektami: asocjacje, dziedziczenie, kompozycja Tożsamość obiektów Model relacyjny Rekord Tabela: kolekcja rekordów tego samego typu Język zapytań Marcin Młotkowski Programowanie obiektowe 10 / 29
Java Data Object Trwałość obiektów definiuje specyfikację; obiekty mogą być pamiętane w plikach, relacyjnych i obiektowych bazach danych; szczegóły (gorliwość, leniwość, etc) są definowane w zewnętrznych plikach xml; przykładowa realizacja: Apache JDO, DataNucleus Marcin Młotkowski Programowanie obiektowe 11 / 29
Java Persistence API Trwałość obiektów specyfikacja; głównie do przechowywania stanu obiektów w relacyjnych BD; szczegóły są definiowane za pomocą annotacji lub w zewnętrznych plikach; Java Persistence Query Language: język zapytań przypominający SQL; implementacje: Hibernate, TopLink. Marcin Młotkowski Programowanie obiektowe 12 / 29
C#: ADO.NET Trwałość obiektów ADO - ActiveX Data Objects ADO.NET środowisko dostępu do danych w BD Marcin Młotkowski Programowanie obiektowe 13 / 29
Entity Framework Trwałość obiektów Część środowiska ADO.NET Powstanie: 2008 rok Projekt danych w postaci konceptualnego modelu danych (Entity Data Model) Automatyczne odwzorowanie na RBD i model obiektowy Zapisywanie modelu danych w pliku XML Marcin Młotkowski Programowanie obiektowe 14 / 29
LINQ: Language Integrated Query Projekt Microsoftu Dostęp na poziomie języka programowania do danych w BD za pomocą składni SQL-podobnej Marcin Młotkowski Programowanie obiektowe 15 / 29
Przykład LINQ Trwałość obiektów Northwind db = new Northwind(connectionString); var q = from o in db.orders, c in db.customers where o.quality == "200" select new { o.duedate,c.itemid}; foreach (var t in q) {... } Marcin Młotkowski Programowanie obiektowe 16 / 29
Rozszerzenia RBD na przykładzie Oracle PL/SQL rozszerzenie SQL o procedury Składnia zapożyczona z Ady Możliwość definiowania własnych programów wykonywanych na serwerze Możliwość deklarowania własnych typów danych (klas) Rozszerzenie SQL o odwołania do obiektów Marcin Młotkowski Programowanie obiektowe 17 / 29
Serwer STONE Trwałość obiektów Przechowuje obiekty Obiekty nie są kopiowane do aplikacji klienta, tylko zostają w serwerze Metody są wykonywane na serwerze Marcin Młotkowski Programowanie obiektowe 18 / 29
Rozwiązanie w Smalltalku Przechowywanie stanu aplikacji w jednym pliku (obrazie). Wady rozwiązania Kłopoty z przetwarzaniem dużych porcji danych Kłopoty z szybkim wyszukiwaniem danych Problem wielodostępu do danych Marcin Młotkowski Programowanie obiektowe 19 / 29
Plan wykładu 1 Trwałość obiektów 2 Marcin Młotkowski Programowanie obiektowe 20 / 29
Obiekty trwałe: inna koncepcja Obiekt (jego stan) oraz implementacja metod jest pamiętana na serwerze Wykonanie metody powoduje odwołanie się do zdalnego obiektu, wykonanie metody na serwerze i zwrócenie klientowi wyniku Serwer dba o spójność danych, wielodostęp, transakcyjność etc Marcin Młotkowski Programowanie obiektowe 21 / 29
Postulaty dotyczące takiego środowiska Jednolity dostęp do obiektów lokalnych i odległych Łatwość tworzenia odwołań do odległych obiektów Niezależność standardów od platformy Marcin Młotkowski Programowanie obiektowe 22 / 29
Architektura Aplikacja Serwer obiekt proxy stub Marcin Młotkowski Programowanie obiektowe 23 / 29
Broker Klient Serwer Klient Serwer Broker Klient Serwer Serwer Marcin Młotkowski Programowanie obiektowe 24 / 29
Środowiska obiektów rozproszonych Java RMI CORBA SOAP DCOM Marcin Młotkowski Programowanie obiektowe 25 / 29
Java RMI RMI Remote Method Invocation Współpraca tylko między aplikacjami napisanymi w Javie java.rmi.* Całe środowisko jest częścią SDK Marcin Młotkowski Programowanie obiektowe 26 / 29
CORBA Zbiór standardów opracowanych przez OMG (Object Management Group) Niezależność od platformy/sprzętu/języka Implementacje: VisiBroker, ORBit Bardzo obszerna specyfikacja Marcin Młotkowski Programowanie obiektowe 27 / 29
SOAP Simple Object Access Protocol Oparty na XML Standard W3C Implementacje:.NET Remoting, Apache SOAP.NET Remoting: również realizacja binarna Marcin Młotkowski Programowanie obiektowe 28 / 29
DCOM Distributed Component Object Model Implementacja tylko na systemy Microsoftu Uznany za przestarzały na rzecz.net Remoting Marcin Młotkowski Programowanie obiektowe 29 / 29