Java Data Objects - PowerPoint PPT Presentation

About This Presentation
Title:

Java Data Objects

Description:

Java Data Objects S ownik Persystencja Transakcja RDBMS ODBMS JDO to standard Producenci (vendors) dostarczaj implementacji standardu JPOX (RDBMS) Orient (ODBMS ... – PowerPoint PPT presentation

Number of Views:147
Avg rating:3.0/5.0
Slides: 19
Provided by: Mare144
Category:
Tags: data | java | jdbc | objects

less

Transcript and Presenter's Notes

Title: Java Data Objects


1
Java Data Objects
2
Slownik
  • Persystencja
  • Transakcja
  • RDBMS
  • ODBMS

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

4
Dlaczego JDO?
  • Mozna zmienic silnik bazy danych a nawet typ bazy
    danych bez zmian w kodzie.
  • Nie trzeba tworzyc struktury bazy danych (koniec
    z normalizacja)
  • Twoje klasy nie musza implementowac zadnych
    specjalnych interfejsów

5
Trzy rodzaje klas w JDO
  • Persistence Capable mamy dla nich wygenerowany
    plik .jdo (deskryptor)
  • Persistence Aware te które manipuluja
    instancjami Persistence Capable
  • Normal klasy które nie maja nic wspólnego z JDO

6
Menadzer Persystencji(Slajd samokomentowalny)
  • Properties propsnew Properties()
  • props.put("javax.jdo.PersistenceManagerFactoryClas
    s","org.jpox.PersistenceManagerFactoryImpl")
  • props.put("javax.jdo.option.ConnectionDriverName",
    "com.mysql.jdbc.driver")
  • props.put("javax.jdo.option.ConnectionURL","jdbcm
    ysql//localhost/jpox")
  • props.put("javax.jdo.option.ConnectionUserName","m
    ysql")
  • props.put("javax.jdo.option.ConnectionPassword",""
    )
  • PersistenceManagerFactory pmfJDOHelper.getPersist
    enceManagerFactory(props)
  • PersistenceManager pmpmf.getPersistenceManager()
  • Mozna tez zczytac 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 txpm.currentTransaction()
  • try
  • tx.begin()
  • Product productnew 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 txpm.currentTransaction()
  • try
  • tx.begin()
  • String product_nameproduct.getName()
  • ...
  • product.setPrice(75.0)
  • tx.commit()
  • finally
  • if (tx.isActive())
  • tx.rollback()

10
deletePersistent()
  • Transaction txpm.currentTransaction()
  • try
  • tx.begin()
  • String product_nameproduct.getName()
  • ...
  • pm.deletePersistent(product)
  • tx.commit()
  • finally
  • if (tx.isActive())
  • tx.rollback()

11
Caly diagram stanów
12
Wszystko to dzieje sie podczas trwania
transakcji, co zrobic by dowolnie modyfikowac
obiekt bez zmian w bazie danych?
  • Przeniesc obiekt w stan Transient
    makeTransient()
  • Odlaczyc obiekt detachCopy()
  • Uzycie nonTransactionalRead/Write()

13
Wiemy jak zapisywac do bazy danych, jak wczytac
obiekt z bazy?!
  • Object identity pm.getObjectId(obj)Object obj
    pm.getObjectById(identity)
  • Uzycie JDOQL JDO Query Language
  • Query q pm.newQuery(MyClass.class, "field1 lt
    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)
  • Uzycie Extentu
  • Extent e pm.getExtent(MyClass.class, true)

15
Inne wazne cechy
  • Persistence-by-reachability
  • class Moja
  • innaMojaKlasa other
  • Fetch-grupy
  • Kiedy wyjmujemy obiekt z bazy danych nie
    wszystkie jego pola musza byc pobierane od razu.
    Mozna ukreslac wlasne Fetch-grupy

16
Wszystko tu to banaly... O co naprawde chodzi?
  • Transakcje optymistyczne i pesymistyczne
  • Wsparcie dla samo-replikowalnych baz danych

17
Jakie to proste! (W teorii)
  • Sciagamy plugin do Eclipsa
  • Wlaczamy support JPOX
  • Plugin generuje nam plik .jdo
  • Po kazdym builddzie JPOX modyfikuje nasze klasy
    tak, ze sa Persistence Capable
  • Mozemy pisac kod naszej aplikacji uzywajac
    sformulowan JDO

18
Zderzenie teorii z praktyka(SMUTNE)
Write a Comment
User Comments (0)
About PowerShow.com