SlideServe
Menu
Préférences
© SlideServe · v2026

Java Data Objects

melodie-cantu avatar
18 diapositives · 308 Views · Nov 21, 2014

Java Data Objects. Słownik. Persystencja Transakcja RDBMS ODBMS. JDO to standard. Producenci (vendors) dostarczają implementacji standardu JPOX (RDBMS) Orient (ODBMS) inteliBO (RDBMS) ObjectDB. Dlaczego JDO?. Można zmienić silnik bazy danych a nawet typ bazy danych bez zmian w kodzie.

Java Data Objects - slide 1
01 / 18Java Data Objects
1 / 17

Télécharger la présentation

Java Data Objects
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation

Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement. Téléchargez la présentation en cliquant sur ce lien. Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.

F I N

Plus de contenu associé

Transcription de la présentation
  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)

  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 Extent’u 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 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)