"Java Data Objects"

Werbung
Zwischenbericht Großer Beleg
"Java Data Objects"
Martin Uhlig
Inhalt
Persistenz in Java
Einführung in Java Data Objects
Eine Anwendung mit JDO
Ausblick
Martin Uhlig
11/2001
Zwischenbericht Großer Beleg
Java Data Objects
2
Möglichkeiten für Persistenz in Java
Serialisierung
Java Database Connectivity (JDBC)
Enterprise JavaBeans (Entity Beans)
Persistenz-Frameworks
Martin Uhlig
11/2001
Zwischenbericht Großer Beleg
Java Data Objects
3
Java Data Objects
Im Juni 1999 als Java Specification Request 12 in den Java
Community Process aufgenommen
Mai 2001 Proposed Final Draft
Ziele:
◆Einheitliche
API für Persistenz-Frameworks
◆Austauschbare
JDO-Implementierungen
◆Standardisierte
Einbindung der Implementierungen in Application
Server
Martin Uhlig
11/2001
Zwischenbericht Großer Beleg
Java Data Objects
4
Klassen, Interfaces und Packages
PersistenceCapable
PersistenceManager
PersistenceManagerFactory
Transaction
Query
Martin Uhlig
11/2001
Zwischenbericht Großer Beleg
Java Data Objects
5
JDO Beispiel
Nicht-persistente Klasse
Persistente Klasse
public class User {
private String name = null;
public class User {
private String name = null;
public void setName(String n) {
name = n;
}
public void setName(String n) {
name = n;
}
public String getName() {
return name;
}
public String getName() {
return name;
}
}
Martin Uhlig
11/2001
}
Zwischenbericht Großer Beleg
Java Data Objects
6
Enhancement
Enhancer wird mit der JDO-Implementierung geliefert
Wandelt Class-Dateien um
Informationen dazu stehen in einer XML-Datei
Beispiel
Java
Quellcode
JDO
Persistenzdefinition
DB
Schema
Martin Uhlig
11/2001
Standard Java
Compiler
Zwischenbericht Großer Beleg
Java Data Objects
Läuft in JVM
Class-Dateien
JDO Enhancer
<?xml version="1.0"?>
<jdo>
<package name="jdobsp">
<class name="User" />
</package>
</jdo>
Enhanced
Class-Dateien
7
Anwendung
PersistenceManager
PersistenceManagerFactory factory =
new JDBCPersistenceManagerFactory();
// allow reads outside of transactions & optimistic locking;
// this cuts down on database resources
factory.setNontransactionalRead(true);
factory.setRetainValues(true);
factory.setOptimistic(true);
PersistenceManager pm = factory.getPersistenceManager();
Martin Uhlig
11/2001
Zwischenbericht Großer Beleg
Java Data Objects
8
Anwendung (2)
Objekt persistent machen
User user = new User();
user.setName("max");
Transaction transaction = pm.currentTransaction();
transaction.begin();
pm.makePersistent(user);
transaction.commit();
Martin Uhlig
11/2001
Zwischenbericht Großer Beleg
Java Data Objects
9
Navigation
Assoziation zwischen zwei Klassen
Department
Employee
public class Department {
private Collection employees;
...
}
public class Employee {
private Department dept;
...
}
Navigation
Department department = employee.getDept();
Iterator i = department.getEmployees().iterator();
Martin Uhlig
11/2001
Zwischenbericht Großer Beleg
Java Data Objects
10
Objekte finden
Direkt
Object getObjectById(Object oid_or_pc, boolean validate);
Object getObjectId(Object pc);
Gesamte Ausprägung
Collection getExtent(Class persistenceCapableClass,
boolean subclasses)
Suche
Collection extent = pm.getExtent(Employee.class, false);
Query q = pm.newQuery(Employee.class,
// Klasse
extent,
// Kandidaten
"income > 100000");
// Filter
Collection results = q.execute();
Martin Uhlig
11/2001
Zwischenbericht Großer Beleg
Java Data Objects
11
Scalable Learning System
Pattern:
◆Business
◆Session
◆Value
Martin Uhlig
11/2001
Delegate
Facade
Object
Zwischenbericht Großer Beleg
Java Data Objects
12
Ausblick
Was kann man vergleichen?
◆Anwendbarkeit
◆Flexibilität
(Navigation, Entwicklungsaufwand, ...)
(Suche, Transaktionen, ...)
◆Performance
◆Speichernutzung
◆Threading
◆...
Martin Uhlig
11/2001
Zwischenbericht Großer Beleg
Java Data Objects
13
Links
http://jcp.org/jsr/detail/12.jsp
www.theserverside.com
www.techtrader.com
www.prismtechnologies.com
Martin Uhlig
11/2001
Zwischenbericht Großer Beleg
Java Data Objects
14
Herunterladen