Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Java Data Objects.

Podobne prezentacje


Prezentacja na temat: "Java Data Objects."— Zapis prezentacji:

1 Java Data Objects

2 Słownik Persystencja Transakcja RDBMS ODBMS

3 JDO to standard Producenci (vendors) dostarczają implementacji standardu JPOX (RDBMS) Orient (ODBMS) inteliBO (RDBMS) ObjectDB

4 Dlaczego JDO? Można zmienić silnik bazy danych a nawet typ bazy danych bez zmian w kodzie. Nie trzeba tworzyć struktury bazy danych (koniec z normalizacją) Twoje klasy nie muszą implementować żadnych specjalnych interfejsów

5 Trzy rodzaje klas w JDO Persistence Capable – mamy dla nich wygenerowany plik *.jdo (deskryptor) Persistence Aware – te które manipulują instancjami Persistence Capable Normal – klasy które nie mają nic wspólnego z JDO

6 Menadżer Persystencji (Slajd samokomentowalny)
Properties props=new Properties(); props.put("javax.jdo.PersistenceManagerFactoryClass","org.jpox.PersistenceManagerFactoryImpl"); props.put("javax.jdo.option.ConnectionDriverName","com.mysql.jdbc.driver"); props.put("javax.jdo.option.ConnectionURL","jdbc:mysql://localhost/jpox"); props.put("javax.jdo.option.ConnectionUserName","mysql"); props.put("javax.jdo.option.ConnectionPassword",""); PersistenceManagerFactory pmf=JDOHelper.getPersistenceManagerFactory(props); PersistenceManager pm=pmf.getPersistenceManager(); Można też zczytać ustawienia z pliku lub poprzez Java Naming and Directory Interface

7 Rodzaje obiektów w JDO (nomenklatura)
Transient Persistent New Persistent Dirty Hollow Persistent Clean Persistent Deleted Persistent New Deleted Persistent Non-transactional Transient Clean Transient Dirty Detached Clean Detached Dirty

8 makePersistent() Transaction tx=pm.currentTransaction(); try {
tx.begin(); Product product=new Product("Sony Discman","A standard discman from Sony",49.99); pm.makePersistent(product); tx.commit(); } finally if (tx.isActive()) { tx.rollback(); }

9 Aktualizacja wpisu w bazie danych
Transaction tx=pm.currentTransaction(); try { tx.begin(); String product_name=product.getName(); ... product.setPrice(75.0); tx.commit(); } finally if (tx.isActive()) { tx.rollback(); }

10 deletePersistent() Transaction tx=pm.currentTransaction(); try {
tx.begin(); String product_name=product.getName(); ... pm.deletePersistent(product); tx.commit(); } finally if (tx.isActive()) { tx.rollback(); }

11 Cały diagram stanów

12 Przenieść obiekt w stan Transient – makeTransient()
Wszystko to dzieje się podczas trwania transakcji, co zrobić by dowolnie modyfikować obiekt bez zmian w bazie danych? Przenieść obiekt w stan Transient – makeTransient() Odłączyć obiekt – detachCopy() Użycie nonTransactional[Read/Write]()

13 Wiemy jak zapisywać do bazy danych, jak wczytać obiekt z bazy?!
Object identity = pm.getObjectId(obj); Object obj = pm.getObjectById(identity); Użycie JDOQL – JDO Query Language Query q = pm.newQuery(MyClass.class, "field1 < value"); q.declareParameters("int value"); List results = q.execute(205); Iterator iter = results.iterator(); while (iter.hasNext()) { MyClass obj = (MyClass)iter.next(); }

14 Alternatywa dla JDOQL (brutalna)
Użycie Extent’u Extent e = pm.getExtent(MyClass.class, true);

15 Persistence-by-reachability
Inne ważne cechy Persistence-by-reachability class Moja { innaMojaKlasa other; } Fetch-grupy Kiedy „wyjmujemy” obiekt z bazy danych nie wszystkie jego pola muszą być pobierane od razu. Można ukreślać własne Fetch-grupy

16 Wszystko tu to banały... O co naprawdę chodzi?
Transakcje optymistyczne i pesymistyczne Wsparcie dla samo-replikowalnych baz danych

17 Jakie to proste! (W teorii)
Ściągamy plugin do Eclipsa Włączamy „support” JPOX Plugin generuje nam plik *.jdo Po każdym build’dzie JPOX modyfikuje nasze klasy tak, że są „Persistence Capable” Możemy pisać kod naszej aplikacji używając sformułowań JDO

18 Zderzenie teorii z praktyką(SMUTNE)


Pobierz ppt "Java Data Objects."

Podobne prezentacje


Reklamy Google