Metody dostępu do danych

Podobne dokumenty
Metody dostępu do danych

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

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

Wyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut.

Wykład 8: Obsługa Wyjątków

Podstawy i języki programowania

Java. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

Programowanie obiektowe

WYJĄTKI. Jest ona jednak czasochłonna i prowadzi do duŝego zapotrzebowania na zasoby systemu.

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

Programowanie obiektowe

Throwable. Wyjatek_1(int x_) { x = x_; } int podaj_x()

Bazy danych. Andrzej Łachwa, UJ, /15

Programowanie obiektowe

Java podstawy jęyka. Wykład 2. Klasy abstrakcyjne, Interfejsy, Klasy wewnętrzne, Anonimowe klasy wewnętrzne.

BAZY DANYCH. Transakcje. opracowanie: Michał Lech

Pojęcie bazy danych. Funkcje i możliwości.

Obsługa transakcji rozproszonych Java. Marek Wojciechowski, Maciej Zakrzewicz Instytut Informatyki, Politechnika Poznańska

Kurs WWW. Paweł Rajba.

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Klasy abstrakcyjne, interfejsy i polimorfizm

Wątki. Definiowanie wątków jako klas potomnych Thread. Nadpisanie metody run().

Języki i metody programowania Java INF302W Wykład 3 (część 1)

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

MongoDB. wprowadzenie. dr inż. Paweł Boiński, Politechnika Poznańska

Bazy danych. Dr inż. Paweł Kasprowski

Plan wykładu. Przykład. Wprowadzenie BAZY DANYCH. Transakcje Hurtownie danych

Klasy cd. Struktury Interfejsy Wyjątki

Informatyka I. Wykład 4. Tablice. Dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Informacje wstępne Autor Zofia Kruczkiewicz Wzorce oprogramowania 4

Dokumentacja do API Javy.

Wykład 4: Klasy i Metody

Oracle PL/SQL. Paweł Rajba.

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Programowanie obiektowe

Programowanie w języku Java WYKŁAD

Singleton. Cel: Przykład: Zastosowanie: Zapewnienie, że klasa ma tylko jedną instancję i dostarczenie globalnego dostępu do niej.

Obsługa błędów za pomocą wyjątków. Paweł Motofa (140746)

Programowanie obiektowe

Oracle PL/SQL. Paweł Rajba.

Metody dostępu do danych

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

1 Przetwarzanie transakcyjne Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa... 3

Dziedziczenie. dr Jarosław Skaruz

Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r.

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Programowanie Obiektowe Ćwiczenie 4

Typy sparametryzowane

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

Podstawy frameworka Spring

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec

DECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ];

Wykład 4. Tablice. Pliki

Wywoływanie metod zdalnych

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

Programowanie obiektowe

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 7

Efekty uboczne błędów

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1

Wyjątki (exceptions)

przykłady problemów; realizacja dostaw części od producenta do klienta:

Klasy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 13

Dawid Gierszewski Adam Hanasko

Modelowanie obiektowe

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 6

Metody dostępu do danych

PHP 5 język obiektowy

Wprowadzenie do projektu QualitySpy

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Ustawienie na poziomie sesji (działa do zmiany lub zakończenia sesji zamknięcia połączenia).

Zaawansowane techniki programowania C#

Obiektowe bazy danych

Dziedziczenie. Tomasz Borzyszkowski

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

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

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Podstawy programowania obiektowego

Technologie i usługi internetowe cz. 2

Technologie obiektowe Object-oriented technologies. Informatyka II stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny)

Programowanie obiektowe

Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania

Oracle PL/SQL. Paweł Rajba.

Współbieżność w środowisku Java

Wykład 6: Dziedziczenie

Wzorce logiki dziedziny

Podstawy programowania. Podstawy C# Tablice

Klasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C

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

Serwery Statefull i Stateless

Paweł Kurzawa, Delfina Kongo

Programowanie obiektowe

Podstawy Języka Java

Definiowanie własnych klas

Multimedia JAVA. Historia

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego

Aplikacje RMI

Programowanie równoległe i rozproszone. Monitory i zmienne warunku. Krzysztof Banaś Programowanie równoległe i rozproszone 1

Transkrypt:

Metody dostępu do danych dr inż. Grzegorz Michalski Na podstawie wykładów dra inż. Juliusza Mikody

Wyjątki JDO Specyfikacja JDO definiuje zbór wyjątków, które mogą być zgłoszone przez implementację JDO. Wszystkie wyjątki mogą być zgłaszane w dowolnym momencie, nie tylko podczas wywoływania metod JDO. Wyjątek może być zgłoszony podczas poruszania się po grafie obiektów (obiekty mogą być czytane w czasie gdy chcemy się do nich odwołać). Wyjątki można podzielić na dwie zasadnicze grupy: Krytyczne po których musi nastąpić ponowne uruchomienie aplikacji oraz niekrytyczne błędy wykonania pojedynczych operacji (możliwe jest ponowienie błędnie wykonanej operacji).

Obsługa wyjątków Aplikacja powinna obsługiwać wszystkie wyjątki (nie tylko związane z implementacja JDO). W szczególności aplikacja powinna zapewnić poprawne zamkniecie instancji PersistanceManager: PersistenceManager pm = null; try { pm = pmf.getpersistencemanager(); // Transakcje JDO pm.close(); } finally { if (pm!= null &&!pm.isclosed()) { if (pm.currenttransaction().isactive()) { pm.currenttransaction().rollback(); } pm.close(); } }

Klasy wyjątków Klasa JDOException jest klasą bazową dla wszystkich wyjątków JDO. Definiuje metody dla wszystkich klas wyjątków JDO. Przesłania także metody tostring() oraz printstacktrace(). Metody wspólne dla wszystkich wyjątków JDO: Object getfailedobject() - obiekt trwały, którego dotyczy wyjątek Throwable[] getnestedexceptions() - tablica zagnieżdżonych wyjątków jeżeli takie zagnieżdżenie miało miejsce.

Klasy wyjątków JDOFatalException klasa bazowa dla wszystkich wyjątków krytycznych. Reakcją na taki wyjątek jest ponowne rozpoczęcie transakcji lub w skrajnych przypadkach ponowne nawiązanie połączenia z bazą danych. JDOFatalUserException wyjątek ten wskazuje na błąd krytyczny spowodowany przez aplikację. Zwykle wskazuje, że aplikacja wywołała metodę JDO w nieodpowiednim momencie np: przy braku połączenia z bazą danych.

Klasy wyjątków JDOFatalInternalException Wyjątek ten sygnalizuje błąd krytyczny w obrębie implementacji JDO. JDOFatalDataStoreException Wyjątek ten sygnalizuje błąd krytyczny w obrębie systemu bazy danych np: wygaśniecie transakcji, utrata połączenia. JDOOptimisticVerificationException Wyjątek ten sygnalizuje, że zakończenie transakcji nie powiodło się wyjątek zgłaszany jest jedynie podczas wykonywania metody commit().

Klasy wyjątków JDOCanRertyException Wyjątek ten stanowi klasę bazową dla wyjątków niekrytycznych. JDOUnsupportedOptionException Wyjątek ten sygnalizuje błąd użycia opcjonalnej funkcjonalności, która nie jest obsługiwana w danej implementacji JDO. JDOUserException Wyjątek ten sygnalizuje błąd spowodowany przez aplikacje np: próba zapisu w bazie danych klasy niezdolnej do trwałości.

Klasy wyjątków JDODataStorageException Wyjątek ten sygnalizuje błąd niekrytyczny, który wystąpił w bazie danych. JDOObjectNotFoundException Wyjątek ten sygnalizuje błąd spowodowany przez aplikację. Obiekt trwały nie może być odnaleziony w bazie danych np: odwołanie do obiektu trwałego przez referencje, gdzie obiekt ten został usunięty z bazy danych przez inną instancję aplikacji.

Tożsamość obiektów JDO gwarantuje, że dla danej instancji PersistanceManager istnieje dokładnie jedna instancja obiektu trwałego. Właściwość ta nosi nazwę unikalności. Właściwość ta gwarantuje, że w pamięci istnieje tylko jedna reprezentacja obiektu trwałego niezależnie od tego, ile razy zostanie on odnaleziony.

Tożsamość obiektów Transaction tx = pm.currenttransaction(); tx.begin(); Osoba o1 = new Osoba("Iksi ski", "Robert", 10); pm.makepersistent(o1); tx.commit(); tx.begin(); Query q = pm.newquery(osoba.class, "nazwisko == \"Iksi ski\""); Collection<Osoba> o = (Collection<Osoba>) q.execute(); Osoba o2 = o.iterator().next(); if (o1 == o2) System.out.println( "Jeden i ten sam obiekt");

Tożsamość obiektów W pamięci JVM może istnieć wiele obiektów klasy PersistanceManager, co powoduje że w pamięci może istnieć wiele instancji tego samego obiektu trwałego. A dokładniej po jednej instancji obiektu trwałego dla każdej instancji klasy PersistanceManager. Każda z tych instancji będzie posiadała tożsamość obiektu w sensie JDO. Klasa JDOHelper posiada metodę umożliwiając pobranie tożsamości obiektu w sensie JDO: static Object getobjectid(object ps)

Tożsamość obiektów PersistenceManager pm1 = pmf.getpersistencemanager(); Transaction tx1 = pm1.currenttransaction(); tx1.begin(); Osoba o1 = new Osoba("Iksi ski", "Robert", 10); pm1.makepersistent(o1); PersistenceManager pm2 = pmf.getpersistencemanager(); Transaction tx2 = pm2.currenttransaction(); tx2.begin(); Query q = pm2.newquery(osoba.class, "nazwisko == \"Iksi ski\""); Collection<Osoba> o = (Collection<Osoba>) q.execute(); Osoba o2 = o.iterator().next(); if (o1!= o2) System.out.println("Ró ne obiekty w pami ci"); Object oo1 = JDOHelper.getObjectId(o1); Object oo2 = JDOHelper.getObjectId(o2); if (oo1.equals(oo2)) System.out.println( "Reprezentacja JDO ta sama");

new Stan obiektów begin Transient Stan ulotny makepersistance Persistent Stan trwały Hollow Stan pusty rollback commit deletepersistance commit edit Persistent Stan trwały Dirty Stan zmieniony commit

Informacje o stanie obiektu Klasa JDOHelper posiada metody określające aktualny stan obiektu trwałego: static boolean isdeleted(java.lang.object pc) static boolean isdetached(java.lang.object pc) static boolean isdirty(java.lang.object pc) static boolean isnew(java.lang.object pc) static boolean ispersistent(java.lang.object pc) static boolean istransactional(java.lang.object pc)

Transakcje Transakcje JDO są ściśle powiązane z transakcjami JDBC Transakcja JDO według specyfikacji gwarantuje, że implementacja JDO posiada własność ACID Atomic (Atomowość), Consistent (Spójność), Isolated (Izolacja), Durable (Trwałość). JDO może opcjonalnie obsługiwać transakcje optymistyczne. Transakcje takie szczególnie są przydatne jeśli wykonanie transakcji wymaga dłuższego okresu czasu i w związku z tym przetrzymywanie zasobów nie jest wskazane.

Własności transakcji NontransactionalRead określa możliwość odwołania się do własności obiektu trwałego poza transakcjami. NontransactionalWrite określa możliwość modyfikacji obiektu trwałego poza transakcjami. Optimistic określa czy transakcja jest optymistyczna RestoreValues przewracanie wartości obiektom z momentu przed rozpoczęciem transakcji po wycofaniu danej transakcji RetainValues pozostawienie wartości pól obiektów trwałych po zakończeniu transakcji

Źródła Java Data Objects, Sameer Tyagi, Keiron McCammon, Michael Vorburger, Heiko Bobzin 2004 http://db.apache.org/jdo/ http://www.datanucleus.org/products/accessplatform_3_0/in dex.html