Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Java Data Objects. Słownik Persystencja Transakcja RDBMS ODBMS.

Podobne prezentacje


Prezentacja na temat: "Java Data Objects. Słownik Persystencja Transakcja RDBMS ODBMS."— 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.PersistenceManagerFactory Impl"); 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 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 Extentu Extent e = pm.getExtent(MyClass.class, true);

15 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 builddzie 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. Słownik Persystencja Transakcja RDBMS ODBMS."

Podobne prezentacje


Reklamy Google