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



Podobne dokumenty
Db4o obiektowa baza danych wersja.net

Metody dostępu do danych

Klasy abstrakcyjne, interfejsy i polimorfizm

Systemy Rozproszone - Ćwiczenie 6

Wywoływanie metod zdalnych

Kurs WWW. Paweł Rajba.

Definicja. Not Only SQL

Programowanie obiektowe

Enkapsulacja, dziedziczenie, polimorfizm

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

akademia androida Składowanie danych część VI

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

Remote Method Invocation 17 listopada 2010

Programowanie obiektowe

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

Podejście obiektowe do budowy systemów rozproszonych

Programowanie obiektowe

Projektowanie aplikacji z bazami danych

Technologie i usługi internetowe cz. 2

Programowanie wielowarstwowe i komponentowe

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ć

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

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

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

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

Wywoływanie metod zdalnych

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

ZSBD ćwiczenie 5. Obiektowe systemy zarządzania bazą danych. Podstawy pracy z OSZBD db4o. ZSBD ćwiczenie 5. Wymagania:

Prototype (prototyp) Cel: Przykład: Określenie rodzaju tworzonych obiektów poprzez wskazanie ich prototypu. Nowe instancje tworzymy kopiując prototyp.

Programowanie obiektowe

Java: interfejsy i klasy wewnętrzne

Aplikacje w środowisku Java

Java Persistence API - zagadnienia zaawansowane

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Programowanie obiektowe

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

Java Zadanie 1. Aby poprawnie uruchomić aplikację desktopową, należy zaimplementować główną metodę zapewniającą punkt wejścia do programu.

Informacje wstępne Autor Zofia Kruczkiewicz Wzorce oprogramowania 4

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

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

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

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

Aplikacje RMI

Programowanie Obiektowe Ćwiczenie 4

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

Programowanie obiektowe

Podstawowe wykorzystanie Hibernate

Programowanie obiektowe

Programowanie obiektowe

Stanowe komponenty sesyjne

Systemy Rozproszone Technologia ICE

Zadanie polega na stworzeniu bazy danych w pamięci zapewniającej efektywny dostęp do danych baza osób.

Wykład 8: klasy cz. 4

Programowanie obiektowe

Modelowanie obiektowe

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Aplikacja webowa w Javie szybkie programowanie biznesowych aplikacji Spring Boot + Vaadin

Systemy Rozproszone. Spis treści. Temat projektu: Regułowy system analizujacy logi. autorzy: Rafał Sadłowski, Sebastian Falkus, Michał Różycki

Akademia ETI. Wprowadzenie do programowania w Javie PG Java User Group Przemysław Kulesza

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

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

Podstawy programowania obiektowego

BEAN VALIDATION. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska

Klasy i obiekty cz II

Kurs programowania aplikacji bazodanowych

1. Czynności przygotowujące aplikację działającą na platformie Java SE Biblioteka5 (należy ją pobrać z załącznika z p.1)

Zaawansowane aplikacje WWW - laboratorium

Programowanie poprzez testy z wykorzystaniem JUnit

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

Metody Metody, parametry, zwracanie wartości

Programowanie w języku Java WYKŁAD

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 7

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java

1 Wprowadzenie do J2EE

Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Programowanie obiektowe i zdarzeniowe

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

Proxy (pełnomocnik) Cel: Zastosowanie: Dostarczyć zamiennik pewnego obiektu, pozwalający kontrolować dostęp do niego.

Wykład 4: Klasy i Metody

1 Atrybuty i metody klasowe

Dziedziczenie. dr Jarosław Skaruz

Wzorce logiki dziedziny

Kurs programowania aplikacji bazodanowych

Instrukcja 10 Laboratorium 13 Testy akceptacyjne z wykorzystaniem narzędzia FitNesse

PODEJŚCIE OBIEKTOWE. Przykład 1 metody i atrybuty statyczne

Dawid Gierszewski Adam Hanasko

1 Wątki 1. 2 Tworzenie wątków 1. 3 Synchronizacja 3. 4 Dodatki 3. 5 Algorytmy sortowania 4

Projektowanie oprogramowania. Warstwa integracji z bazą danych oparta na technologii ORM Platforma Java EE Autor: Zofia Kruczkiewicz

NHibernate Hibernate dla platformy.net. Hibernate posiada także dużą społeczność, zatem nietrudno uzyskać jakieś wsparcie w przypadku problemów.

Programowanie obiektowe zastosowanie języka Java SE

EJB 3.0 (Enterprise JavaBeans 3.0)

Typy metod: konstruktory, destruktory, selektory, zapytania, iteratory.

Wprowadzenie. Narzędzia i środowiska programistyczne. Laboratorium 1. Prowadzący: Kierunek: Semestr: Rok: Tomasz Gądek Informatyka Zimowy 2

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Podejście obiektowe do relacyjnych baz danych Hibernate.

Programowanie obiektowe

11.6 Klasa do obsługi liczb wymiernych

Transkrypt:

Wprowadzenie - podstawy - technikalia Przydatne wiadomości Wprowadzenie 1 czerwca 2009

Wprowadzenie - podstawy - technikalia Przydatne wiadomości Wprowadzenie = bjects = database for objects w pełni obiektowa baza danych podwójna licencja - GPL oraz komercyjna dostępna dla Java oraz.net wspierana przez korporację Versant - szybki rozwój olbrzymie środowisko użytkowników (ponad 60 000) aktywnie uczestniczących w rozwoju bazy i jej testowaniu wersja stabilna - 7.4 wersja rozwojowa - 7.10

Wprowadzenie - podstawy - technikalia Przydatne wiadomości Zalety ODBMS w stosunku do RDBMS prostota użycia (zapytania piszemy w języku natywnym dla przechowywanych danych) bezpośrednie odwzorowanie przechowywanych danych (obiektów) w bazie brak konieczności wprowadzania dodatkowej warstwy ORM (np. Hibernate) łatwe przeglądanie zawartości bazy lepsza wydajność w czysto obiektowych zapytaniach

Wprowadzenie - podstawy - technikalia Przydatne wiadomości Wady ODBMS w stosunku do RDBMS na chwilę obecną gorsze wsparcie dla tej technologii gorsza wydajność w niektórych zastosowaniach

Wprowadzenie - podstawy - technikalia Przydatne wiadomości Model danych public class Pilot { private String name; private int points; public Pilot(String name,int points) { this.name=name; this.points=points; public int getpoints() { return points; public void addpoints(int points) { this.points+=points; public String getname() { return name; public String tostring() { return name+"/"+points;

Wprowadzenie - podstawy - technikalia Przydatne wiadomości Używnie bazy - tryb wbudowany ObjectContainer db = Db4oEmbedded.openFile(Db4oEmbedded.newConfiguration(), DB4OFILENAME); try { Pilot pilot1 = new Pilot("Michael Schumacher", 100); db.store(pilot1); Pilot pilot2 = new Pilot("Rubens Barrichello", 99); db.store(pilot2); finally { db.close();

Wprowadzenie - podstawy - technikalia Przydatne wiadomości Używnie bazy - tryb rozproszony musimy implementować własny serwer.... ale jest to proste ObjectServer server = Db4oClientServer.openServer(Db4oClientServer.newServerConfiguration(), DB4OFILENAME, 0); try { ObjectContainer client1 = server.openclient(); ObjectContainer client2 = server.openclient(); //... client1.close(); client2.close(); finally { server.close(); objectcontainer = Db4oClientServer.openClient(Db4oClientServer.newClientConfiguration(), HOST, PORT, USER, PASS);

Wprowadzenie - podstawy - technikalia Przydatne wiadomości Rodzaje zapytań - Query By Example (QBE) przydatne tylko w bardzo prostych aplikacjach wszystkie obiekty muszą zostać wczytane do pamięci i przejrzane problemy z wyszukaniem obiektów o wartościach pól odpowiadających wartościom domyślnym Pilot proto = new Pilot(null, 0); ObjectSet result = db.querybyexample(proto); ObjectSet result = db.querybyexample(pilot.class); List <Pilot> pilots = db.query(pilot.class); Pilot proto = new Pilot("Michael Schumacher", 0); ObjectSet result = db.querybyexample(proto); Pilot proto = new Pilot(null, 100); ObjectSet result = db.querybyexample(proto);

Wprowadzenie - podstawy - technikalia Przydatne wiadomości Rodzaje zapytań - Native Queries (NQ) działają szybko bardzo elastyczne optymalizowane przed wykonaniem weryfikacja na poziomie kompilacji List <Pilot> result = db.query(new Predicate<Pilot>() { public boolean match(pilot pilot) { return pilot.getpoints() > 99 && pilot.getpoints() < 199 pilot.getname().equals("rubens Barrichello"); );

Wprowadzenie - podstawy - technikalia Przydatne wiadomości Rodzaje zapytań - SODA Query API bezpośredni dostęp do wierzchołków grafu zapytania brak weryfikacji typów - odwołania do pól poprzez ich nazwy w postaci napisów Query query=db.query(); query.constrain(pilot.class); ObjectSet result=query.execute(); Query query=db.query(); query.constrain(pilot.class); query.descend("name").constrain("michael Schumacher"); ObjectSet result=query.execute(); Query query=db.query(); query.constrain(pilot.class); Constraint constr=query.descend("name").constrain("michael Schumacher"); query.descend("points").constrain(new Integer(99)).and(constr); ObjectSet result=query.execute();

Wprowadzenie - podstawy - technikalia Przydatne wiadomości Aktualizacja i usuwanie obiektów musimy wywołać wyszukanie obiektu, bo inaczej przyjmie, że dodajemy nowy obiekt o identycznych wartościach pól jak obiekt już istniejący w bazie ObjectSet result = db.querybyexample(new Pilot("Michael Schumacher", 0)); Pilot found = (Pilot) result.next(); found.addpoints(11); db.store(found); ObjectSet result = db.querybyexample(new Pilot("Michael Schumacher", 0)); Pilot found = (Pilot) result.next(); db.delete(found);

Wprowadzenie - podstawy - technikalia Przydatne wiadomości Zagnieżdżone obiekty pobieranie zagnieżdżonych obiektów następuje tylko do pewnego poziomu domyślnie zagnieżdżone obiekty nie są aktualizowane w bazie usuwanie obiektu nie powoduje skasowania jego dzieci podczas usuwania obiektu nie następuje sprawdzenie, czy istnieją do niego jeszcze jakieś referencje EmbeddedConfiguration config = Db4oEmbedded.newConfiguration(); config.common().objectclass("com..f1.chapter2.car").cascadeonupda te(true); ObjectContainer db = Db4oEmbedded.openFile(config, DB4OFILENAME); EmbeddedConfiguration config = Db4oEmbedded.newConfiguration(); config.common().objectclass("com..f1.chapter2.car").cascadeondele te(true); ObjectContainer db = Db4oEmbedded.openFile(config, DB4OFILENAME);

Wprowadzenie - podstawy - technikalia Przydatne wiadomości Kolekcje, tablice, interfejsy i dziedziczenie obsługa kolekcji, tablic, interfejsów i dziedziczenia jest zrobiona w sposób naturalny public class SensorReadout {... public class TemperatureSensorReadout extends SensorReadout {... public class PressureSensorReadout extends SensorReadout {... SensorReadout proto= new TemperatureSensorReadout(null,null,null,0.0); ObjectSet result=db.querybyexample(proto); SensorReadout proto=new SensorReadout(null,null,null); ObjectSet result=db.querybyexample(proto); ObjectSet result=db.querybyexample(sensorreadout.class);

Wprowadzenie - podstawy - technikalia Przydatne wiadomości Aktywacje pobieranie zagnieżdżonych obiektów następuje tylko do pewnego poziomu (domyślnie 5) konfigurowalne na różne sposoby public static void retrievesnapshotssequentiallyimproved(objectcontainer db) { ObjectSet result = db.querybyexample(car.class); Car car = (Car) result.next(); SensorReadout readout = car.gethistory(); while (readout!= null) { db.activate(readout, 1); System.out.println(readout); readout = readout.getnext();

Wprowadzenie - podstawy - technikalia Przydatne wiadomości Transakcyjność każde połączenie jest oddzielną transakcją tryb read commited wykonanie rollback nie przywraca poprzedniego stanu obiektów w aplikacji jeśli chcemy tego dokonać, to musimy pobrać je ponownie z bazy Pilot pilot=new Pilot("Rubens Barrichello",99); Car car=new Car("BMW"); car.setpilot(pilot); db.store(car); db.commit(); Pilot pilot=new Pilot("Michael Schumacher",100); Car car=new Car("Ferrari"); car.setpilot(pilot); db.store(car); db.rollback();

Wprowadzenie - podstawy - technikalia Przydatne wiadomości Inne mechanizmy automatyczne aktywacje pobiera całe drzewo obiektów mało wydajne implementacja interfejsu Activatable atrybuty obiektu są automatycznie aktywowane w momencie ich pierwszego użycia przezroczyste utrwalanie obiekty muszą implementować interfejs Activatable lista zmienionych obiektów jest zapamiętywana przy operacji commit obiekty z listy są zapisywane w bazie Pilot pilot=new Pilot("Rubens Barrichello",99); Car car=new Car("BMW"); car.setpilot(pilot); db.store(car); db.commit(); Car car=new Car("Ferrari"); car.setpilot(pilot); db.store(car); db.rollback();

Wprowadzenie - podstawy - technikalia Przydatne wiadomości Przydatne narzędzia wtyczki do NetBeans oraz Eclipse do przeglądania bazy OME (Object Manager Enterprise) dostępny od wersji 7.8 wtyczki do łączenia z innymi językami i technologiami: Spring Ruby JRuby Silverlight

Wprowadzenie - podstawy - technikalia Przydatne wiadomości Przydatne materiały The Definitive Guide to Stefan Edlich, Henrik Hörning, Reidar Hörning, Jim Paterson, Apress 2006 Tutorial na stronie projektu http://.com/ główna strona projektu http://developer..com/ strona dla deweloperów