Perzisztencia-megoldások Java Technológiával
description
Transcript of Perzisztencia-megoldások Java Technológiával
![Page 1: Perzisztencia-megoldások Java Technológiával](https://reader030.fdocuments.net/reader030/viewer/2022033107/56814722550346895db4582b/html5/thumbnails/1.jpg)
Perzisztencia-megoldások Perzisztencia-megoldások Java TechnológiávalJava Technológiával
Molnár István, Simon GézaMolnár István, Simon Géza
![Page 2: Perzisztencia-megoldások Java Technológiával](https://reader030.fdocuments.net/reader030/viewer/2022033107/56814722550346895db4582b/html5/thumbnails/2.jpg)
A szerzőkA szerzők
• Java 0.9 óta (1995)• Java/J2EE tervezők• oktatók• Sun & Oracle
istvan.molnar@
geza.simon@
sun.hu
![Page 3: Perzisztencia-megoldások Java Technológiával](https://reader030.fdocuments.net/reader030/viewer/2022033107/56814722550346895db4582b/html5/thumbnails/3.jpg)
ÚtvonaltervÚtvonalterv
Felülnézet
• motiváció• elvek, fogalmak• módszerek
(objektum adatbázis, memória adatbázis, xml adatbázis, ...)
Alulnézet
• specifikációk, szabványok(jdo, prevalence, ...)
• termékek(Kodo, XML:DB, ...)
Összefoglalás és a jövő
![Page 4: Perzisztencia-megoldások Java Technológiával](https://reader030.fdocuments.net/reader030/viewer/2022033107/56814722550346895db4582b/html5/thumbnails/4.jpg)
Perzisztencia?Perzisztencia?
• mi az?• mire való?
• elvi fajtái• gyakorlati módszerek• konkrét termékek
![Page 5: Perzisztencia-megoldások Java Technológiával](https://reader030.fdocuments.net/reader030/viewer/2022033107/56814722550346895db4582b/html5/thumbnails/5.jpg)
Impedance mismatchImpedance mismatch
:obj:obj
:obj:obj
:obj:obj
:obj:obj
?
![Page 6: Perzisztencia-megoldások Java Technológiával](https://reader030.fdocuments.net/reader030/viewer/2022033107/56814722550346895db4582b/html5/thumbnails/6.jpg)
FelülnézetFelülnézet
Az adatokat meg kell őrizni / át kell menteni– leállás - újraindítás között– elosztott rendszer, cluster elemei között – HA rendszerben eszközcserék között
Object-Relational Mapping
![Page 7: Perzisztencia-megoldások Java Technológiával](https://reader030.fdocuments.net/reader030/viewer/2022033107/56814722550346895db4582b/html5/thumbnails/7.jpg)
Absztrakt perzisztenciaAbsztrakt perzisztencia
Perzisztencia
Hosszú távú perzisztencia– ortogonális– transzparens
![Page 8: Perzisztencia-megoldások Java Technológiával](https://reader030.fdocuments.net/reader030/viewer/2022033107/56814722550346895db4582b/html5/thumbnails/8.jpg)
Technológiai irányokTechnológiai irányok
Amit lehet, generáljunk (metaadatokból, leíróból,...)– kódgenerálás– sémagenerálás
„Impedanciaillesztés”– Object - relational– Relational - object
![Page 9: Perzisztencia-megoldások Java Technológiával](https://reader030.fdocuments.net/reader030/viewer/2022033107/56814722550346895db4582b/html5/thumbnails/9.jpg)
JDBCJDBC
:obj:obj
:obj:obj
:obj:obj
:obj:obj
![Page 10: Perzisztencia-megoldások Java Technológiával](https://reader030.fdocuments.net/reader030/viewer/2022033107/56814722550346895db4582b/html5/thumbnails/10.jpg)
DAODAO
:obj:obj:obj:obj
:obj:obj
:obj:obj:DAO:DAO
![Page 11: Perzisztencia-megoldások Java Technológiával](https://reader030.fdocuments.net/reader030/viewer/2022033107/56814722550346895db4582b/html5/thumbnails/11.jpg)
JDOJDO
:obj:obj
:obj:obj
:obj:obj:obj:obj
:persistenceManager:persistenceManager
![Page 12: Perzisztencia-megoldások Java Technológiával](https://reader030.fdocuments.net/reader030/viewer/2022033107/56814722550346895db4582b/html5/thumbnails/12.jpg)
Entity EJBEntity EJB
application server
:obj:obj
:obj:obj
:obj:obj
![Page 13: Perzisztencia-megoldások Java Technológiával](https://reader030.fdocuments.net/reader030/viewer/2022033107/56814722550346895db4582b/html5/thumbnails/13.jpg)
A memória az adatbázisA memória az adatbázis
• Memória - olcsó• Memória - gyors
Megoldandók... biztonság, stabilitás, garaciák
:obj:obj:obj:obj
:obj:obj
:obj:obj
![Page 14: Perzisztencia-megoldások Java Technológiával](https://reader030.fdocuments.net/reader030/viewer/2022033107/56814722550346895db4582b/html5/thumbnails/14.jpg)
XML adatbázisXML adatbázis
<A> <B>text1</B> <C> <D>child of C</D> <E>another child of C</E> </C> <F>moreText</F> </A>
![Page 15: Perzisztencia-megoldások Java Technológiával](https://reader030.fdocuments.net/reader030/viewer/2022033107/56814722550346895db4582b/html5/thumbnails/15.jpg)
XML adatbázisXML adatbázis
<A> <B>text1</B> <C> <D>child of C</D> <E>another child of C</E> </C> <F>moreText</F> </A>
![Page 16: Perzisztencia-megoldások Java Technológiával](https://reader030.fdocuments.net/reader030/viewer/2022033107/56814722550346895db4582b/html5/thumbnails/16.jpg)
Program kód vagy lekérdezésProgram kód vagy lekérdezés
Kód– API-hívások– saját protokoll
Lekérdező nyelv (és módosító nyelv)– létező (SQL, Xpath, ...)– új nyelv (EJBQL, JDOQL, OQL...)
![Page 17: Perzisztencia-megoldások Java Technológiával](https://reader030.fdocuments.net/reader030/viewer/2022033107/56814722550346895db4582b/html5/thumbnails/17.jpg)
AlulnézetAlulnézet
Specifikációk, szabványok, majdnem szabványokTermékek
– API-k, library-k, csomagok– fejlesztést segítő eszközök– futtatókörnyezetek
![Page 18: Perzisztencia-megoldások Java Technológiával](https://reader030.fdocuments.net/reader030/viewer/2022033107/56814722550346895db4582b/html5/thumbnails/18.jpg)
JDOJDO
• Domain objects - programozó feladata• Tárolásuk - persistence manager
– tranzakcionálisan
• Transzparens perzisztencia (de nem ortogonális)– látszólag minden objektum a JVM memóriájában
![Page 19: Perzisztencia-megoldások Java Technológiával](https://reader030.fdocuments.net/reader030/viewer/2022033107/56814722550346895db4582b/html5/thumbnails/19.jpg)
JDOJDO
PersistenceManager pm = ... //factoryTransaction t = ... t.begin(); pm.makePersistent(appObj1); t.commit(); pm.close();
![Page 20: Perzisztencia-megoldások Java Technológiával](https://reader030.fdocuments.net/reader030/viewer/2022033107/56814722550346895db4582b/html5/thumbnails/20.jpg)
JDOJDO
életciklus - állapotok– transient, ..., persistent new, persistent dirty, ...
persistent deleted, ... persistent nontransactional, ...
tranzakciók - callback szinkronizáció– jdoPostLoad(), jdoPreStore(), jdoPreDelete(), ...
![Page 21: Perzisztencia-megoldások Java Technológiával](https://reader030.fdocuments.net/reader030/viewer/2022033107/56814722550346895db4582b/html5/thumbnails/21.jpg)
JDOQL JDOQL (és nincs jdoDML!)(és nincs jdoDML!)
...query.declareImports("import Project"); query.declareVariables("Project proj"); query.declareParameters( "String state, String deptName, int sal");
query.setOrdering( "department.deptid ascending, salary descending");
Collection result = (Collection)query.execute(...
![Page 22: Perzisztencia-megoldások Java Technológiával](https://reader030.fdocuments.net/reader030/viewer/2022033107/56814722550346895db4582b/html5/thumbnails/22.jpg)
JDO implementációkJDO implementációk
Kodo
Sun Reference Implementation
Tri-active JDO (sourceforge.net)
...
![Page 23: Perzisztencia-megoldások Java Technológiával](https://reader030.fdocuments.net/reader030/viewer/2022033107/56814722550346895db4582b/html5/thumbnails/23.jpg)
CMP EJBCMP EJB
Osztályok (domain object) elkészítése1 osztály, 2 interface
• Bean implementation osztály– Entity EJB: adatbázis műveleteket az AS hívja
– CMP Entity EJB: abstract: DB műveleteket az AS írja
![Page 24: Perzisztencia-megoldások Java Technológiával](https://reader030.fdocuments.net/reader030/viewer/2022033107/56814722550346895db4582b/html5/thumbnails/24.jpg)
CMP EJBCMP EJB
Perzisztens mezők kijelölése:deployment descriptor(ok) - XML
• Lekérdezés: EJBQLSELECT OBJECT(d) FROM Document d WHERE d.regNo = ?1
• Mezők összerendelése<cmp-field-mapping name="documentId" persistence-name="documentId" />
• Típusok (DB típus - java osztály) egyeztetése
![Page 25: Perzisztencia-megoldások Java Technológiával](https://reader030.fdocuments.net/reader030/viewer/2022033107/56814722550346895db4582b/html5/thumbnails/25.jpg)
JDO vagy CMP EJB?JDO vagy CMP EJB?
CMP– appserver
– deployment descr
– metódus szintű tranzakc.– EJBQL (~sql)– remote invocation– kódgenerálás
JDO– appserver, web server
1 réteg, 2 réteg, ...– metadata– öröklődés, polimorfizmus– tranzakc. szinkronizáció– JDOQL (~java)
– bytecode enhancement
![Page 26: Perzisztencia-megoldások Java Technológiával](https://reader030.fdocuments.net/reader030/viewer/2022033107/56814722550346895db4582b/html5/thumbnails/26.jpg)
Prevalence (memória a DB)Prevalence (memória a DB)
– Minden a memóriában
– Időnként snapshotok– Serializable Command objektumok
– RDBMS nyelven: „~redo log”• determinisztikus üzleti objektumok• replika rendszer - konzisztens snapshot• hibatűrés is
![Page 27: Perzisztencia-megoldások Java Technológiával](https://reader030.fdocuments.net/reader030/viewer/2022033107/56814722550346895db4582b/html5/thumbnails/27.jpg)
Prevalence (memória a DB)Prevalence (memória a DB)
![Page 28: Perzisztencia-megoldások Java Technológiával](https://reader030.fdocuments.net/reader030/viewer/2022033107/56814722550346895db4582b/html5/thumbnails/28.jpg)
Prevalence (memória a DB)Prevalence (memória a DB)
– tranzakciók pedig nincsenek• persze nem is kell:
tetszőlegesen bonyolult Commandok– időzítés, timestamp, ...
• külső óra: Commandokat küld
– implementáció: pl. Prevayler (sourceforge.net)
![Page 29: Perzisztencia-megoldások Java Technológiával](https://reader030.fdocuments.net/reader030/viewer/2022033107/56814722550346895db4582b/html5/thumbnails/29.jpg)
XML:DB (xml adatbázis)XML:DB (xml adatbázis)
„Ha nincs XML adat, nem kell XML adatbázis!”
• Fogalmak:– Document– Document collection– Query Engine
• Xpath (w3c)– Indexek
![Page 30: Perzisztencia-megoldások Java Technológiával](https://reader030.fdocuments.net/reader030/viewer/2022033107/56814722550346895db4582b/html5/thumbnails/30.jpg)
XML:DB (xml adatbázis)XML:DB (xml adatbázis)
• Adatmódosítás– kiolvasás - módosítás - beszúrás
• Xupdate– szerverre ruházza ezt a feladatot
• XML:DB API (implementációtól független!)
• XMLObjects (szerver funkc. bővítéshez)
![Page 31: Perzisztencia-megoldások Java Technológiával](https://reader030.fdocuments.net/reader030/viewer/2022033107/56814722550346895db4582b/html5/thumbnails/31.jpg)
XML:DB (xml adatbázis)XML:DB (xml adatbázis)
• Példa XPath/db/my-collection/my-child-collection/my-document
• URL formában (távoli szerver)xindice://myhost.domain.com:4080/db/my-collection/my-child-collection/my-document
![Page 32: Perzisztencia-megoldások Java Technológiával](https://reader030.fdocuments.net/reader030/viewer/2022033107/56814722550346895db4582b/html5/thumbnails/32.jpg)
ODMGODMG
• Nyelv-független– C++, Smalltalk, Java, ...– Objektum szinten közös perzisztencia
– OQL lekérdezőnyelv (SQL92 alapú)
![Page 33: Perzisztencia-megoldások Java Technológiával](https://reader030.fdocuments.net/reader030/viewer/2022033107/56814722550346895db4582b/html5/thumbnails/33.jpg)
KonklúzióKonklúzió
• Nincs egyértelmű győztes– és még rengeteg további megoldás létezik
(Hibernate, Castor, Torque, ...)
• Választás – jó architect feladata
Továbblépés• szabványok• implementációk
![Page 34: Perzisztencia-megoldások Java Technológiával](https://reader030.fdocuments.net/reader030/viewer/2022033107/56814722550346895db4582b/html5/thumbnails/34.jpg)
További forrásokTovábbi források
általábanhttp://java.sun.com/
http://www.theserverside.com/
http://w3c.org/
http://db.apache.org/
http://xml.apache.org/
konferencia: jaoo.dk
jdohttp://access1.sun.com/jdo/
![Page 35: Perzisztencia-megoldások Java Technológiával](https://reader030.fdocuments.net/reader030/viewer/2022033107/56814722550346895db4582b/html5/thumbnails/35.jpg)
További forrásokTovábbi források
jdo vs. ejbhttp://www.onjava.com/lpt/a/3763
http://www.theserverside.com/home/thread.jsp?thread_id=771
prevalencehttp://www.advogato.org/article/398.html
http://www-106.ibm.com/developerworks/web/library/wa-objprev/index.html
![Page 36: Perzisztencia-megoldások Java Technológiával](https://reader030.fdocuments.net/reader030/viewer/2022033107/56814722550346895db4582b/html5/thumbnails/36.jpg)
KérdésekKérdések
??
??
??
??
??
??
??
![Page 37: Perzisztencia-megoldások Java Technológiával](https://reader030.fdocuments.net/reader030/viewer/2022033107/56814722550346895db4582b/html5/thumbnails/37.jpg)
Köszönjük a figyelmet!Köszönjük a figyelmet!
www.drotposta.hu/
stf2003/
istvan.molnar
geza.simon
@sun.hu
![Page 38: Perzisztencia-megoldások Java Technológiával](https://reader030.fdocuments.net/reader030/viewer/2022033107/56814722550346895db4582b/html5/thumbnails/38.jpg)