Programowanie obiektowe

Podobne dokumenty
Programowanie obiektowe

Bazy danych tworzenie aplikacji bazodanowych ORM / JPA

Programowanie w Ruby

Programowanie w Ruby

Programowanie w Ruby

Mapowanie obiektowo-relacyjne z wykorzystaniem Hibernate

Podejście obiektowe do relacyjnych baz danych Hibernate.

Technologia informacyjna

Programowanie współbieżne i rozproszone

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

Programowanie Komponentowe WebAPI

Wywoływanie metod zdalnych

Oracle11g: Wprowadzenie do SQL

Bazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław r.

Metody dostępu do danych

Remote Method Invocation 17 listopada 2010

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

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu

Wywoływanie metod zdalnych

Oprogramowanie systemów równoległych i rozproszonych Wykład 7

Komunikacja i wymiana danych

Podejście obiektowe do budowy systemów rozproszonych

Programowanie obiektowe

Dostęp do baz danych z serwisu www - PHP. Wydział Fizyki i Informatyki Stosowanej Joanna Paszkowska, 4 rok FK

Aplikacje RMI

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

1 Wprowadzenie do J2EE

PHP: bazy danych, SQL, AJAX i JSON

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Obiektowość BD Powtórka Czas odpowiedzi. Bazy Danych i Systemy informacyjne Wykład 14. Piotr Syga

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

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

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

Remote Method Invocation 17 listopada rozproszonych. Dariusz Wawrzyniak (IIPP) 1

Podstawowe informacje o bazach danych. Technologie Informacyjne

Kurs programowania aplikacji bazodanowych

15. Funkcje i procedury składowane PL/SQL

Programowanie w języku Java. Wykład 13: Java Platform, Enterprise Edition (Java EE)

JAVA PERSISTENCE API CZĘŚĆ 2 ASPEKTY ZAAWANSOWANE. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska

Podstawowe wykorzystanie Hibernate

Programowanie obiektowe

Relacyjne bazy danych. Podstawy SQL

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

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

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

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

Podejście obiektowe do budowy systemów rozproszonych

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Programowanie obiektowe

Rozproszone systemy internetowe. Wprowadzenie. Koncepcja zdalnego wywołania procedury

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

Automatyczne generowanie kodu. 4Developers, 26 marca 2010

Język SQL, zajęcia nr 1

Baza danych. Modele danych

Programowanie w języku Java. Bazy danych SQLite w Javie

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

Projektowanie bazy danych. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Jarosław Kuchta Projektowanie Aplikacji Internetowych. Projektowanie warstwy danych

Programowanie wielowarstwowe i komponentowe

LINQ TO SQL w dużym skrócie jest to zintegrowany język zapytao pozwalający na mapowanie relacyjnych baz danych na model obiektowy.

Pojęcie systemu baz danych

Programowanie obiektowe

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

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

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

Systemy rozproszone. na użytkownikach systemu rozproszonego wrażenie pojedynczego i zintegrowanego systemu.

Założenia do ćwiczeń: SQL Server UWM Express Edition: \SQLEXPRESS. Zapoznaj się ze sposobami użycia narzędzia T SQL z wiersza poleceń.

E:\DYDAKTYKA\ZAI\ZWWW\Laboratoria\L07\Java Persistence.doc 2011-lis-24, 17:0 Zaawansowane aplikacje internetowe Laboratorium Java Persistence.

Relacyjne bazy danych. Podstawy SQL

Metody dostępu do danych

Wprowadzenie do Doctrine ORM

Programowanie obiektowe

Sprawdzenie czy połączenie przebiegło poprawnie if (mysqli_connect_errno()) { echo Błąd; Połączenie z bazą danych nie powiodło się.

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Oracle PL/SQL. Paweł Rajba.

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

Programowanie obiektowe

SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, Spis treści

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

Programowanie MorphX Ax

Diagramy klas. dr Jarosław Skaruz

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

Podstawy programowania III WYKŁAD 2

Wykład :45 BD-1 W_3

Wprowadzenie do technologii Web Services: SOAP, WSDL i UDDI

Projektowanie warstwy danych

WPROWADZENIE DO BAZ DANYCH

Tworzenie aplikacji bazodanowych w delphi dla dużych baz danych FRAMEWORK IMPET

Projektowanie aplikacji z bazami danych

Wykład 8. SQL praca z tabelami 5

Plan wykładu CORBA. Cechy aplikacji rozproszonych. Aplikacje rozproszone

Spis treści. Przedmowa

Database Connectivity

Platforma.NET laboratorium 4 Aktualizacja: 15/11/2013. Visual Basic.NET dostęp do bazy danych. Baza Microsoft SQL Server Compact

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

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

Transkrypt:

Programowanie obiektowe Wykład 13 Marcin Młotkowski 24 maja 2018

Plan wykładu 1 Trwałość obiektów 2 Marcin Młotkowski Programowanie obiektowe 509 / 553

Plan wykładu Trwałość obiektów 1 Trwałość obiektów 2 Marcin Młotkowski Programowanie obiektowe 510 / 553

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 511 / 553

Przechowywanie stanu w BD Aplikacja Baza danych Definicje klas Implementacje metod Zapis stanu Stan obiektów Odczyt stanu Marcin Młotkowski Programowanie obiektowe 512 / 553

Scenariusz użycia trwałego obiektu Odczyt obiektu (stanu obiektu z bd) Modyfikacja stanu Wywołanie metod obiektu Zapis Marcin Młotkowski Programowanie obiektowe 513 / 553

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 514 / 553

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 515 / 553

Łą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 516 / 553

Składowe integracji języka z bazą danych Odwzorowanie cech obiektowych w relacyjnych bazach danych (object-relational mapping, ORM) Implementacja warstwy pośredniej (zapytania) Marcin Młotkowski Programowanie obiektowe 517 / 553

Porównanie modelu relacyjnego z obiektowym Model obiektowy Ukrywanie danych i dostęp tylko przez wskazany interfejs Relacje między obiektami: asocjacje, dziedziczenie, kompozycja wywołania metod Tożsamość obiektów Model relacyjny Rekord Tabela: kolekcja rekordów tego samego typu Związki między tabelami Język zapytań Marcin Młotkowski Programowanie obiektowe 518 / 553

Java Data Object Trwałość obiektów specyfikacja; obiekty mogą być pamiętane w plikach, relacyjnych i obiektowych bazach danych; szczegóły (gorliwość, leniwość, etc) są definiowane w zewnętrznych plikach xml; przykładowa realizacja: Apache JDO, DataNucleus Marcin Młotkowski Programowanie obiektowe 519 / 553

Java Persistence API (JPA) specyfikacja; głównie do przechowywania stanu obiektów w relacyjnych BD; szczegóły są definiowane za pomocą annotacji lub w zewnętrznych plikach; JPA Query Language: język zapytań przypominający SQL; implementacje: Hibernate, TopLink. Marcin Młotkowski Programowanie obiektowe 520 / 553

Przykład Trwałość obiektów Rejestr wyrażonych zgód w ramach dyrektywy RODO. Rejestr dla każdej osoby przechowuje rejestr udzielonych bądź odwołanych zgód. Marcin Młotkowski Programowanie obiektowe 521 / 553

Model danych w UML Osoba - Imie: String - Nazwisko: String - DataUr ZgodaRODO - Kto: Osoba - zgoda: boolean - zmiana: data - tresc: URL Marcin Młotkowski Programowanie obiektowe 522 / 553

Implementacja klasy Osoba import javax.persistence.*; public class Osoba { } private Integer id; String Imie; String Nazwisko; GregorianCalendar DataUr; Marcin Młotkowski Programowanie obiektowe 523 / 553

Implementacja klasy Osoba import javax.persistence.*; @Entity @Table public class Osoba implements Seralizable { @Id @GeneratedValue private Integer id; String Imie; String Nazwisko; GregorianCalendar DataUr; } Marcin Młotkowski Programowanie obiektowe 523 / 553

Implementacja klasy ZgodaRODO @Entity @Table public class ZgodaRODO implements Seralizable { @ManyToOne Osoba kto; boolean Zgoda = false; GregorianCalendar zmiana; URL Tresc; } Marcin Młotkowski Programowanie obiektowe 524 / 553

Plik persistence.xml Trwałość obiektów <persistence xmlns="http://java.sun.com/xml/ns/persistence"... version="2.0"> <persistence-unit name="ii.progrobiekt.jpa"> <provider>org.hibernate.ejb.hibernatepersistence</provider> <class>osoba</class> <class>zgodarodo</class> <properties> <property name="dialect" value="org.hibernate.dialect.sqlitedia <property name="javax.persistence.jdbc.driver" value="org.sqlit <property name="javax.persistence.jdbc.url" value="jdbc:sqlite: <property name="javax.persistence.jdbc.user" value="" /> <property name="javax.persistence.jdbc.password" value="" /> <property name="hibernate.show_sql" value="true" /> <property name="format_sql" value="true" /> </properties> </persistence-unit> Marcin Młotkowski Programowanie obiektowe 525 / 553

Podstawowe operacje Create Read Update Delete Marcin Młotkowski Programowanie obiektowe 526 / 553

Szkielet programu Trwałość obiektów EntityManagerFactory sessionfactory = Persistence.createEntityManagerFactory("ii.progobiekt.jpa"); EntityManager entitymanager = sessionfactory.createentitymanager(); entitymanager.gettransaction().begin(); entitymanager.gettransaction().commit(); entitymanager.close(); Marcin Młotkowski Programowanie obiektowe 527 / 553

Create Trwałość obiektów entitymanager.persist( new Osoba() ); entitymanager.persist( new Osoba() ); Marcin Młotkowski Programowanie obiektowe 528 / 553

Create Trwałość obiektów entitymanager.persist( new Osoba() ); entitymanager.persist( new Osoba() ); INSERT INTO OSOBA (Nazwisko, Imie, DataUr VALUES ("", "", NULL) Marcin Młotkowski Programowanie obiektowe 528 / 553

Read Trwałość obiektów List<Osoba> result = entitymanager. createquery("from Osoba", Osoba.class ). getresultlist(); for (Osoba osoba : result ) { System.out.println(osoba.ToString()); } Marcin Młotkowski Programowanie obiektowe 529 / 553

Read Trwałość obiektów List<Osoba> result = entitymanager. createquery("from Osoba", Osoba.class ). getresultlist(); for (Osoba osoba : result ) { System.out.println(osoba.ToString()); } SELECT * FROM OSOBA Marcin Młotkowski Programowanie obiektowe 529 / 553

Update Trwałość obiektów Jeśli obiekt został pobrany z BD i zmodyfikowany wewnątrz transakcji, wtedy jest automatycznie zapisany po wywołaniu metody.commit(); można zaznaczyć, że obiekt jest brudny, gdy manager nie zauważy zmiany (np. zmiany w tablicy). Marcin Młotkowski Programowanie obiektowe 530 / 553

Delete Trwałość obiektów CriteriaBuilder cb = entitymanager.getcriteriabuilder(); CriteriaDelete<User> deleteuser = cb.createcriteriadelete(osoba.class); Root<User> cuser = deleteuser.from(osoba.class); List<Predicate> predicates = new ArrayList<Predicate>(); predicates.add(cb.equal(cuser.get("id"), id_to_delete)); deleteuser.where(predicates.toarray(new Predicate[] )); Query query = entitymanager.createquery(deleteuser); query.executeupdate(); Marcin Młotkowski Programowanie obiektowe 531 / 553

Delete Trwałość obiektów CriteriaBuilder cb = entitymanager.getcriteriabuilder(); CriteriaDelete<User> deleteuser = cb.createcriteriadelete(osoba.class); Root<User> cuser = deleteuser.from(osoba.class); List<Predicate> predicates = new ArrayList<Predicate>(); predicates.add(cb.equal(cuser.get("id"), id_to_delete)); deleteuser.where(predicates.toarray(new Predicate[] )); Query query = entitymanager.createquery(deleteuser); query.executeupdate(); DELETE FROM OSOBA WHERE OSOBA.id=1203 Marcin Młotkowski Programowanie obiektowe 531 / 553

Utworzenie/aktualizacja schematu bazy danych Każda implementacja ma swoje narzędzia do automatyzacji. odpowiedni wpis w pliku persistence.xml nakazujący utworzenie/aktualizację BD; odpowiedni kod w naszym programie; narzędzia zewnętrzne. Marcin Młotkowski Programowanie obiektowe 532 / 553

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 533 / 553

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 534 / 553

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 535 / 553

Model danych w UML (ponownie) Osoba - Imie: String - Nazwisko: String - DataUr ZgodaRODO - Kto: Osoba - zgoda: boolean - zmiana: data - tresc: URL Marcin Młotkowski Programowanie obiektowe 536 / 553

Entity Developer Trwałość obiektów Marcin Młotkowski Programowanie obiektowe 537 / 553

RODO.Designer.cs Trwałość obiektów plik wygenerowany Entity Developerem; 553 wiersze. Marcin Młotkowski Programowanie obiektowe 538 / 553

Przykład LINQ Trwałość obiektów Zgody db = new Zgody(connectionString); var q = from o in db.osoba, z in db.zgodarodos where o.id == z.osobaid and z.zgoda and o.nazwisko = select new {z.zmiana, c.tresc}; foreach (var t in q) {... } Marcin Młotkowski Programowanie obiektowe 539 / 553

RUBY Trwałość obiektów ActiveRecords każdej klasie będącej podklasą klasy Base odpowiada tabela w bd; narzędzia do tzw. migracji; obiektowy dostęp do danych Osoba.find(:all, :conditions => "nazwisko = Młotkowski ") Marcin Młotkowski Programowanie obiektowe 540 / 553

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 541 / 553

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 542 / 553

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 543 / 553

Plan wykładu 1 Trwałość obiektów 2 Marcin Młotkowski Programowanie obiektowe 544 / 553

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 545 / 553

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 546 / 553

Architektura Aplikacja Serwer obiekt proxy stub Marcin Młotkowski Programowanie obiektowe 547 / 553

Broker Klient Serwer Klient Serwer Broker Klient Serwer Serwer Marcin Młotkowski Programowanie obiektowe 548 / 553

Środowiska obiektów rozproszonych Java RMI CORBA SOAP DCOM Marcin Młotkowski Programowanie obiektowe 549 / 553

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 550 / 553

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 551 / 553

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 552 / 553

DCOM Distributed Component Object Model Implementacja tylko na systemy Microsoftu Uznany za przestarzały na rzecz.net Remoting Marcin Młotkowski Programowanie obiektowe 553 / 553