Ziele von Java Data Objects (JDO)

Werbung
Datenbanken und
Informationssysteme 2
SS 2004
Prof. Dr. Stefan Böttcher
Universität Paderborn
Datenbanken und Informationssysteme 2 - Prof. Dr. Stefan Böttcher - SS2004 – Folie JDO - 1
Ziele von Java Data Objects (JDO)
•
nur eine Schnittstelle zu verschiedenen Datenquellen
anstatt mehrerer unterschiedlicher
(JDBC, ODMG, DOM/SAX, ...)
•
nur noch eine Anfragesprache 'JDO QL'
lernen und anwenden
Datenbanken und Informationssysteme 2 - Prof. Dr. Stefan Böttcher - SS2004 – Folie JDO - 2
Internet-Technologie für E-Business
Prof. Dr. Stefan Böttcher
1
Ziele von Java Data Objects (JDO)
(fast) beliebige Java Objekte transparent persistent
Java Quelltext bleibt unverändert
JDO-Implementierung übernimmt Speicherung
( in DB, File System, XML-Dokument, … )
Datenbanken und Informationssysteme 2 - Prof. Dr. Stefan Böttcher - SS2004 – Folie JDO - 3
Ziele von Java Data Objects (JDO)
(fast) beliebige Java Objekte transparent persistent
Java Quelltext bleibt unverändert
JDO-Implementierung übernimmt Speicherung
( in DB, File System, XML-Dokument, … )
JavaApplikation
JDOImplementierung
RDBMS
XML-DB
CVS
OODB
Files
...
Datenbanken und Informationssysteme 2 - Prof. Dr. Stefan Böttcher - SS2004 – Folie JDO - 4
Internet-Technologie für E-Business
Prof. Dr. Stefan Böttcher
2
Zentrale Interfaces von JDO
PersistenceManagerFactory
erzeugt
1
verwaltet
*
Query-
*
1
PersistenceManager
erzeugt
0..1
*
PersistenceCapable
1
unterstützt
1
Transaction
Alle sind Interfaces
Wie bei JDBC liefert der JDO-Implementierer seine Implementierung
Treiber und Erweiterungen (Enhancement)
Datenbanken und Informationssysteme 2 - Prof. Dr. Stefan Böttcher - SS2004 – Folie JDO - 5
Interface PersistenceCapable
verwaltet
PersistenceManager
Unterscheide:
persistence capable Klassen ≠
0..1
*
PersistenceCapable
persistence aware Klassen
persistence capable Klassen implementieren
interface PersistenceCapable
Wie? Durch Deklaration und Byte-Code-Erweiterung durch Enhancer
Transparente Persistenz für beliebige Java-Klassen
( außer Thread , Socket , Exception , über JNI implementierte Klassen)
Datenbanken und Informationssysteme 2 - Prof. Dr. Stefan Böttcher - SS2004 – Folie JDO - 6
Internet-Technologie für E-Business
Prof. Dr. Stefan Böttcher
3
PersistenceManagerFactory
erzeugt PersistenceManager-Instanz
PersistenceManagerFactory pmf =
PersistenceManagerFactories.getFactory();
pmf.setConnectionURL(“FastObjects://LOCAL/my_base”);
pmf.setConnectionUserName(“user1”);
pmf.setConnectionPassword(“geheim”);
PersistenceManager pm = pmf.getPersistenceManager( );
...
zuständig für
- 'Pooling' von PM-Instanzen
- JNDI-Lookup
Datenbanken und Informationssysteme 2 - Prof. Dr. Stefan Böttcher - SS2004 – Folie JDO - 7
PersistenceManager
Mitarbeiter boss = new Mitarbeiter( “Reich” , 100000 );
Mitarbeiter worky = new Mitarbeiter( “Meier” , 40000 );
worky.setChef( boss );
// boss ist erreichbar
Transaction trans = pm.currentTransaction();
try {
trans.begin( );
pm.makePersistent( worky ); // macht Objekte persistent
pm.deletePersistent( boss );
trans.commit( );
}
catch(Exception e)
{
// löscht Objekt aus DB
trans.rollback( );
}
Datenbanken und Informationssysteme 2 - Prof. Dr. Stefan Böttcher - SS2004 – Folie JDO - 8
Internet-Technologie für E-Business
Prof. Dr. Stefan Böttcher
4
JDO Enhancer
Java-Byte-Code von persistence capable Klassen
nachkompilieren
Ł Transparente Persistenz
Jeder JDO-Anbieter liefert eigenen Enhancer,
z.B. Poet
> javac *.java
> ptj.bat -enhance system.jdo
Datenbanken und Informationssysteme 2 - Prof. Dr. Stefan Böttcher - SS2004 – Folie JDO - 9
JDO Metadaten
XML-File
Anbieter-unabhängig:
persistente Klassen bekannt geben
(z.B. bei Poet genügt dies für Mapping auf OODB)
Implementierungs- (und Anbieter-) abhängig:
Datenmapping ( z.B. auf File oder relationale DB )
Datenbanken und Informationssysteme 2 - Prof. Dr. Stefan Böttcher - SS2004 – Folie JDO - 10
Internet-Technologie für E-Business
Prof. Dr. Stefan Böttcher
5
JDO QL und Filter
Filter sind Boole’sche Java-Ausdrücke
String filter = “ gehalt > 100000 ” ;
Query query = pm.newQuery( Mitarbeiter.class , filter );
Rückgabetyp einer JDO-Query: java.util.Collection
Collection mitarbeiter = query.execute( );
suche alle “überbezahlten” Mitarbeiter
filter = “gehalt > chef.gehalt”;
Datenbanken und Informationssysteme 2 - Prof. Dr. Stefan Böttcher - SS2004 – Folie JDO - 11
JDO QL und Filter (2)
Query query2 = pm.newQuery( Mitarbeiter.class );
query2.declareParameter(“int limit”);
query2.setFilter( “ gehalt > limit ” ) ;
ergebnis = query2.execute( new Integer( 100000 ) ) ;
Datenbanken und Informationssysteme 2 - Prof. Dr. Stefan Böttcher - SS2004 – Folie JDO - 12
Internet-Technologie für E-Business
Prof. Dr. Stefan Böttcher
6
Vorteile von JDO
Portabilität , DB-Unabhängigkeit ( relational, OO, Filesystem, XML, … )
späterer Austausch des Datenbanksystems möglich
keine Einarbeitung in unterschiedliche DBMS
Keine unterschiedlichen Anfragesprachen ( SQL , OQL , XPath )
keine Einarbeitung in unterschiedliche DBMS – Schnittstellen
( JDBC , ODMG , DOM/SAX , … )
Hersteller-Kompetenzen für Ziel-DBMS nutzen (Performance)
Datenbanken und Informationssysteme 2 - Prof. Dr. Stefan Böttcher - SS2004 – Folie JDO - 13
Einschränkungen von JDO
noch stark eingeschränkte Query-Sprache
• Vergleichsoperatoren : == , != , < , > , <= , >=
• Funktionen : startsWith( ) , endsWith( ) , contains ( ) , isEmpty ( )
JDO – wird kommerziell evtl. nicht weiter unterstützt
Datenbanken und Informationssysteme 2 - Prof. Dr. Stefan Böttcher - SS2004 – Folie JDO - 14
Internet-Technologie für E-Business
Prof. Dr. Stefan Böttcher
7
Herunterladen