Projektowanie aplikacji z bazami danych



Podobne dokumenty
Informacje wstępne Autor Zofia Kruczkiewicz Wzorce oprogramowania 4

Bazy danych 2. Wykład 1

Programowanie obiektowe

Wprowadzenie db4o - podstawy db4o - technikalia Przydatne wiadomości. Wprowadzenie. db4o. Norbert Potocki. 1 czerwca Norbert Potocki db4o

Kurs programowania aplikacji bazodanowych

Kurs programowania aplikacji bazodanowych

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

1. Mapowanie diagramu klas na model relacyjny.

Paweł Rajba

Podstawowe pojęcia dotyczące relacyjnych baz danych. mgr inż. Krzysztof Szałajko

Projektowanie obiektowe oprogramowania Wzorce architektury aplikacji (3) Wykład 11 Repository, Unit of Work Wiktor Zychla 2016

Kurs programowania aplikacji bazodanowych

Tworzenie komponentów logiki biznesowej i warstwy dostępu do danych w oparciu o EJB3.0/JPA lub EJB 3.1/JPA2

Projektowanie obiektowe oprogramowania Wykład 9 Wzorce architektury aplikacji (1) Wiktor Zychla 2013

Bazy danych - wykład wstępny

Grzegorz Ruciński. Warszawska Wyższa Szkoła Informatyki Promotor dr inż. Paweł Figat

Warstwa integracji. wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe.

Bazy Danych. C. J. Date, Wprowadzenie do systemów baz danych, WNT - W-wa, (seria: Klasyka Informatyki), 2000

Projektowanie systemów informatycznych. Roman Simiński siminskionline.pl. Modelowanie danych Diagramy ERD

Alicja Marszałek Różne rodzaje baz danych

Baza danych. Modele danych

Bazy danych. Zenon Gniazdowski WWSI, ITE Andrzej Ptasznik WWSI

Technologie obiektowe

SQL w 24 godziny / Ryan Stephens, Arie D. Jones, Ron Plew. Warszawa, cop Spis treści

Oracle PL/SQL. Paweł Rajba.

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

Zasady transformacji modelu DOZ do projektu tabel bazy danych

Podstawowe pakiety komputerowe wykorzystywane w zarządzaniu przedsiębiorstwem. dr Jakub Boratyński. pok. A38

Informatyka I BAZY DANYCH. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2017

Projektowanie aplikacji z bazami danych

NHibernate. Narzędzie mapowania obiektowo - relacyjnego

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Instalacja SQL Server Express. Logowanie na stronie Microsoftu

Relacyjne bazy danych a XML

Java Persistence API - zagadnienia zaawansowane

Wykład 8: klasy cz. 4

Program wykładu. zastosowanie w aplikacjach i PL/SQL;

Opisy efektów kształcenia dla modułu

Oracle11g: Wprowadzenie do SQL

Mapowanie obiektowo-relacyjne z wykorzystaniem Hibernate

Kurs programowania aplikacji bazodanowych

Spis treści. Przedmowa

Wykład I. Wprowadzenie do baz danych

PHP: bazy danych, SQL, AJAX i JSON

Krzysztof Kadowski. PL-E3579, PL-EA0312,

Program szkoleniowy Efektywni50+ Moduł V Raportowanie dla potrzeb analizy danych

Ogólny plan przedmiotu. Strony WWW. Literatura BAZY DANYCH. Materiały do wykładu:

Mariusz Trzaska Modelowanie i implementacja systemów informatycznych

Systemy baz danych w zarządzaniu przedsiębiorstwem. W poszukiwaniu rozwiązania problemu, najbardziej pomocna jest znajomość odpowiedzi

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Diagramy klas. dr Jarosław Skaruz

Wprowadzenie do baz danych

Co to są relacyjne bazy danych?

Modelowanie i Programowanie Obiektowe

Technologia informacyjna

Program szkolenia: Symfony, nowoczesny framework PHP

Spis treści. Część I Wprowadzenie do pakietu oprogramowania Analysis Services

Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java

Metody dostępu do danych

Projektowanie obiektowe oprogramowania Wzorce architektury aplikacji (3) Wykład 11 Repository, Unit of Work Wiktor Zychla 2017

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski. Bazy danych ITA-101. Wersja 1

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

AUREA BPM Oracle. TECNA Sp. z o.o. Strona 1 z 7

Programowanie obiektowe

4 Web Forms i ASP.NET Web Forms Programowanie Web Forms Możliwości Web Forms Przetwarzanie Web Forms...152

Kurs WWW. Paweł Rajba.

Wybrane problemy z dziedziny modelowania i wdrażania baz danych przestrzennych w aspekcie dydaktyki. Artur Krawczyk AGH Akademia Górniczo Hutnicza

Wykład XII. optymalizacja w relacyjnych bazach danych

Struktura drzewa w MySQL. Michał Tyszczenko

Część I Tworzenie baz danych SQL Server na potrzeby przechowywania danych

Analiza i projektowanie oprogramowania. Analiza i projektowanie oprogramowania 1/32

Pojęcie systemu baz danych

Dane wejściowe. Oracle Designer Generowanie bazy danych. Wynik. Przebieg procesu

Wzorce projektowe. dr inż. Marcin Pietroo

Programowanie obiektowe - 1.

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Systemy GIS Systemy baz danych

Baza danych. Baza danych to:

PLAN WYKŁADU BAZY DANYCH PODSTAWOWE KWESTIE BEZPIECZEŃSTWA OGRANICZENIA DOSTĘPU DO DANYCH

WPROWADZENIE DO BAZ DANYCH

Organizacja zajęć BAZY DANYCH II WYKŁAD 1. Plan wykładu. SZBD Oracle

Rozdział 4 KLASY, OBIEKTY, METODY

Dotacje na innowacje. Inwestujemy w waszą przyszłość.

SZKOLENIE TWORZENIE SYSTEMÓW

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

Porównanie systemów zarządzania relacyjnymi bazami danych

ORGANIZACJA ZAJĘĆ BAZY DANYCH PLAN WYKŁADU SCHEMAT SYSTEMU INFORMATYCZNEGO

Adam Cankudis IFP UAM

Programowanie aplikacji biznesowych

Automatyzacja testowania oprogramowania. Automatyzacja testowania oprogramowania 1/36

Model logiczny SZBD. Model fizyczny. Systemy klientserwer. Systemy rozproszone BD. No SQL

UML w Visual Studio. Michał Ciećwierz

Podstawy inżynierii oprogramowania

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska

Paweł Kurzawa, Delfina Kongo

ARCHICAD 21 podstawy wykorzystania standardu IFC

GS2TelCOMM. Rozszerzenie do TelCOMM 2.0. Opracował: Michał Siatkowski Zatwierdził: IMIĘ I NAZWISKO

OBC01/TOPMOB Projektowanie w języku Objective-C

Transkrypt:

Systemy mapowania relacyjno-obiektowego Instytut Informatyki Uniwersytet Wrocławski

Plan wykładu Wprowadzenie do trwałości Niedopasowanie paradygmatów Architektura warstwowa Czym jest ORM? Problemy i pytania związane z ORM Dlaczego warto użyć ORM? Kupić czy napisać? Systemy ORM

Czym jest trwałość? Składowanie danych utworzonych podczas działania programu Najczęściej obecnie w bazie relacyjnej Relacyjne bazy danych są najbardziej rozpowszechnione Były próby stworzenia obiektowych baz danych, ale na razie niewiele z tego wyszło Prosty schemat uzyskania trwałości generujemy przygotowane zapytania dla obiektów parametryzujemy zapytania dla konkretnych obiektów, przeglądamy wyniki zapytań,...

Czym jest trwałość? Prosty schemat realizuje dostęp niskopoziomowy Zadanie dosyć żmudne Programista powinien się skupić na tworzeniu logiki biznesowej, a nie obsługą trwałości To może zrezygnować z baz relacyjnych? Niestety, jedyne sprawdzone rozwiązanie Obiekty trwałe i ulotne Trwałość przechodnia, czyli trwałość przez osiągalność Trwałość będziemy rozumieć jako połączenie elementów zapamiętywanie, organizacja i pobieranie danych, współbieżność i integralność danych, współdzielenie danych.

Czym jest trwałość? Pojęcie obiektowego modelu dziedziny abstrakcja identyfikująca rzeczywiste byty występujące w danej dziedzinie i powiązania między nimi nie jest przeznaczony dla programistów i nie zawiera szczegółów dotyczących implementacji Systemy ORM operują na modelu dziedzinowym Uwaga: proste i małe aplikacje czasami łatwiej napisać bez korzystania z modelu dziedzinowego i ORM, tylko po prostu operując na tabelkach

Niedopasowanie paradygmatów W czym rzecz Polega na zupełnie innych filozofii dotyczących modelu relacyjnego i obiektowego Niedopasowanie implikuje szereg konkretnych problemów Problem szczegółowości Przyjrzyjmy się mu na przykładzie. Mamy klasy User i Address W bazie danych możemy utworzyć dla nich osobne tabele pojawia się problem dużych złączeń Albo zapamiętać poszczególne pola adresu w tabeli User: User(ID, Name, A Street, A City, A Code) i wtedy pojawia się problem szczegółowości. Problem łatwy do rozwiązania, chociaż często spotykany.

Niedopasowanie paradygmatów Problem podtypów W większości (czyli we wszystkich) DBMS nie jest obsługiwane dziedziczenie Z drugiej strony dziedziczenie to podstawowy mechanizm w językach obiektowych Zagadnienie asocjacji polimorficznej. Rozpatrzmy przykład: Mamy klasy User 1.. Payment, CreditCard Payment, BankAccount Payment Powiązanie User Payment realizuje asocjację polimorficzną

Niedopasowanie paradygmatów Problem identyczności Jak możemy porównywać elementy: Za pomocą porównania obiektów operatorem == Za pomocą zdefiniowania metody Equals() Porównując klucz główny w tabeli relacyjnej Oczywiście, wszystkie te sposoby się istotnie różnią Pojawia się problem występowania wielu obiektów reprezentujących ten sam wiersz z tabeli relacyjnej Pierwsze zalecenie: jako klucz główny powinno być pole niezależne od innych, będące int-em

Niedopasowanie paradygmatów Problemy dotyczące asocjacji W systemie relacyjnym mamy związki jeden-do-wielu i jeden-do-jednego Związek wiele-do-wielu jest tak naprawdę połączeniem związków jeden-do-wielu W świecie obiektowym poprzez kompozycję możemy z kolei tworzyć asocjacje jednokierunkową tworzyć asocjacje dwukierunkową, definiując odpowiednie elementy w obu obiektach tworzyć asocjacje jeden-do-jednego, jeden-do-wielu, wiele-do-wielu Ponieważ w obiektowości można więcej, w systemie relacyjnym trzeba dokonywać symulacji

Niedopasowanie paradygmatów Problemy nawigacji po grafie obiektów Poprzez utworzenie odpowiednich asocjacji, łatwiej nawigować po grafie obiektów Mamy daną ścieżkę: jednostka.getosoba(3).getulica() Jak to pobrać? Efektywnie byłoby wykonać odpowiedni JOIN Metody jednak będą ściągać dane po trochę, czyli bardzo nieefektywnie Ogólnie pojawia sie problem odwzorowań języka wewnętrznego systemu ORM na odpowiedni dialekt SQL

Architektura warstwowa Źródło: C. Bauer, G. King, Hibernate in Action, Manning 2005

Architektura warstwowa Co w warstwie trwałości? Serializacja Jest to podstawowy, wbudowany w język mechanizm trwałości Klasa jest zdolna do trwałości, gdy dodamy atrybut Serializable W przypadku serializacji XML nawet to nie jest potrzebne Zapisywane są automatycznie całe grafy obiektów Przydaje się głównie w prostych zastosowaniach np.rejestracji profilu użytkownika, wymianie komunikatów w protokołach wykorzystujących Internet (ale nie tylko), np. w komunikacji z WebService

Architektura warstwowa Co w warstwie trwałości? Dlaczego nie serializacja? Mechanizm ten nie umożliwia Formułowania zapytań Nie możemy wczytać obiektu warunkowo Częściowego odczytu bądź aktualizacji Co jest przydatne przy operowaniu na dużych danych Zarządzania cyklem życia obiektów Nie ma tutaj pojęcia stanu Współbieżności i transakcji Nie można równocześnie czytać i zapisywać z tego samego strumienia (np. poprzez wątki) Pojęcia transakcji w ogóle w przypadku serializacji nie ma

Architektura warstwowa Co w warstwie trwałości? Ręczne tworzenie kodu za pomocą ADO.NET Zaleta: mamy dokładnie to co chcemy Wada: kupa roboty i związanych z tym kosztów a po co, skoro są gotowe rozwiązania Odwzorowanie obiektowo relacyjne W pewnym rodzaju problemów/zadań najlepsze rozwiązanie Nie są to rozwiązania pozbawione wad

Odwzorowanie obiektowo relacyjne Czym jest ORM? Oprogramowanie zapewniający trwałość automatycznie Automat translacji działa na podstawie metadanych opisujących odwzorowanie obiektu na dane Translacja jest przezroczysta i działa w obie strony Cztery główne składowe ORM interfejs pozwalający na wykonywanie operacji CRUD na obiektach klas umiejących zapewnić trwałość interfejs lub język pozwalający zadawać zapytania narzędzia do określania metadanych elementy dodatkowe: obsługa transakcji, leniwe pobieranie asocjacji, optymalizacje

Problemy i pytania związane z ORM Jak musi wyglądać klasa, żeby można było ją utrwalać? Jak definiuje się metadane? Czy są narzędzia, które robią to automatycznie? Czy trzeba je w ogóle definiować? W jaki sposób jest odwzorowywana hierarchia dziedziczenia? Jak realizowane sa zagadnienia: atrybut not null, dostępność pól: public, private, protected, nazewnictwo np. w Oracle nazwy mogą mieć co najwyżej 30 znaków

Problemy i pytania związane z ORM W jaki sposób realizowana jest tożsamość obiektów? Jak tworzyć obiekt logiki biznesowej (user, payment, itd.)? Czy można to automatyzować? Jak wygląda współpraca pomiędzy obiekatmi logiki biznesowej a obiektami oprogramowania ORM? Jakie są możliwości języka zapytań? Jak wydajne jest pobieranie danych z asocjacji? nasz przykład: jednostka.getosoba(3).getulica()

Dlaczego warto użyć ORM? Rozwiązanie oparte na ORM zapewnia: Produktywność programista skupia się na problemie biznesowym, a nie składowaniem obiektów Konserwację Mniej kodu przez co łatwiej panować nad aplikacją ORM jest zwykle bardziej elastyczny niż własna warstwa dostępu do danych, przez co łatwiej modyfikować aplikację

Dlaczego warto użyć ORM? Rozwiązanie oparte na ORM zapewnia c.d.: Wydajność Powszechnie panuje przekonanie, że ręcznie napisana trwałość będzie wydajniejsza od tej zautomatyzowanej w ORM I zwykle tak jest, jednak dobry ORM jest dobrze zoptymalizowany i dopracowany Często też istotną kwestią określającą wydajność ORM jest odpowiednia konfiguracja Niezależność od dostawcy Jedna z istotniejszych zalet: zwykle raz napisana aplikacja będzie działać na Oracle, SQL Server, PostgreSQL, itd.

Istotne pytanie: kupić czy napisać? Napisanie rozbudowanego systemu ORM nie jest trywialne i jest czasochłonne Odpowiedź na pytanie zależy przede wszystkim od Czasu, który jest na zdobycie systemu Wymagań, które system powinien spełniać Kosztów, które można ponieść Odpowiedź ułatwiają ORM-y udostępniane na licencji GPL Zwykle odpowiedź brzmi: kupić lub wykorzystać jeden z darmowych

Jakie ORM będziemy omawiać? NHibernate ADO.NET Entity Framework