Vesant JDO Genie für transparente Persistenz mit relationalen

Werbung
“Vesant JDO Genie für transparente
Persistenz mit relationalen
Datenbanken.”
Martin Wessel
Senior Pre-Sales Consultant
Versant GmbH
mailto: [email protected]
Copyright © Versant Europe 2004.
All products are trademarks or registered trademarks of the respective companies.
The information contained in this document is property of Versant.
JUGS 2004
Sie entwickeln Anwendungen in Java
ƒ Wie machen Sie die
Business-Objekte Ihrer
Anwendungen
persistent?
Copyright © Versant Europe 2004
2
JUGS 2004
Sie benutzen eine relationale Datenbank
ƒ Zugriff mit JDBC
ƒ Bruch in der Datenmodellierung
ƒ Das Businessmodell ist Java
ƒ Das Datenmodell ist relational
ƒ Schlechte Performance bei komplexen Datenmodellen
ƒ Entwicklung des Mapping-Codes ist sehr aufwendig
Copyright © Versant Europe 2004
3
JUGS 2004
Sie haben bereits ein Mapping-Tool
ƒ Die Plege des Mapping-Codes übernimmt das
Tool
ƒ Das Mapping-Tool unterstützt keinen
Standard
Copyright © Versant Europe 2004
4
JUGS 2004
Transparente Persistenz mit JDO
ƒ JDO ist Standard von Sun für transparente
Persistenz
ƒ Versant ist Mitglied in der Expertengruppe
ƒ Aktuelle Version JDO 1.0.1
ƒ Die Anwendungslogik ist Java
ƒ Das Datenmodell ist Java
Copyright © Versant Europe 2004
5
JUGS 2004
Transparente Persistenz mit JDO
ƒ Die Daten werden gespeichert in:
ƒ Relationalen Datenbanken
ƒ ORACLE, DB2, MySQL, …
ƒ Objekt Datenbanken
ƒ FastObjects j2, FastObjects t7,
Versant Developer Suite
Copyright © Versant Europe 2004
6
JUGS 2004
Transparente Persistenz mit JDO
ƒ Anwendungs Architekturen
ƒ J2ME - Eingebettete Systeme
ƒ J2SE - Client/Server
ƒ J2EE - Enterprise Java Beans
ƒ Integration mit Java Connector Architecture (JCA)
Copyright © Versant Europe 2004
7
JUGS 2004
Konzepte von JDO im Detail
ƒ
ƒ
ƒ
ƒ
Entwicklungszyklus
Persistence by Reachability
Lazy Loading
Change Tracking
Copyright © Versant Europe 2004
8
JUGS 2004
Employee
public class Employee {
String name = null;
float salary;
private Employee ()
{
String name = new String();
salary = (float) 0;
}
public Employee (String name) {
this.name
= name;
this.salary = (float) 70000;
}
public void modifySalary(float delta) {
salary = salary + delta;
}
…}
Copyright © Versant Europe 2004
9
JUGS 2004
JDO Meta Data
<jdo>
<package name="dilbert">
<class name="Employee">
</class>
<class name="Department">
<field name="employees" embedded="true">
<collection element-type="dilbert.Employee"/>
</field>
</class>
</package>
</jdo>
Copyright © Versant Europe 2004
10
JUGS 2004
JDO Entwicklungszyklus
MyClass
.java
Java
Compiler
MyClass
.class
MyClass
.class
JDO
Enhancer
XML
Metadata
JVM
Copyright © Versant Europe 2004
11
JUGS 2004
Transparente Persistenz mit JDO
JVM
Transiente Objekte
Persistente Objekte
Applikation
Objekte werden
transparent aus
der Datenbank
gelesen
Änderungen werden
transparent in die
Datenbank
geschrieben
JDO Implementierung
Navigation statt Abfragen
Zugriff auf RDBMS mit JDBC
Direktzugriff auf ODBMS
Datenbank
Copyright © Versant Europe 2004
12
JUGS 2004
Department
public class Department {
String name = null;
Employee manager = null;
Set employees = new HashSet();
private Department() {}
public Department (String name, Employee manager) {
this.name
= name;
this.manager = manager;
employees = new HashSet();
}
public void addEmployee(Employee emp) {
employees.add(emp);
}
Copyright © Versant Europe 2004
13
JUGS 2004
Department (Fortsetzung)
public Employee getManager() {
return manager;
}
public Iterator getEmployees() {
return employees.iterator();
}
public int getNofEmployees() {
return employees.size();
}
…}
Copyright © Versant Europe 2004
14
JUGS 2004
LoadDatabase
public class LoadDatabase
{
public static void main (String[] args) {
if (args.length != 1) {
System.out.println ("Usage: LoadDatabase <properties>”);
System.exit (1);
}
String
propertiesfile = args [0];
PersistenceManagerFactory pmFactory =
JDOFactory.getPersistenceManagerFactory(propertiesfile);
PersistenceManager pm =
pmFactory.getPersistenceManager();
Transaction trx = pm.currentTransaction();
Copyright © Versant Europe 2004
15
JUGS 2004
LoadDatabase (Fortsetzung)
trx.begin();
Employee boss = new Employee ("Boss");
Department department = new Department("RD", boss);
Employee emp1 = new Employee ("Walt");
Employee emp2 = new Employee ("Dilbert");
department.addEmployee(emp1);
department.addEmployee(emp2);
pm.makePersistent(department);
trx.commit();
pm.close();
Copyright © Versant Europe 2004
16
JUGS 2004
Persistence by Reachability
object B
Add()
object A
Durch Referenzen
direkt oder indirekt
erreichbare Objekte
gehören ebenfalls
dazu.
object C
object D
Copyright © Versant Europe 2004
17
JUGS 2004
Nach LoadDatabase
name: RD
manager:
employees
name: Boss
salary: 70.000
name: Walt
salary: 70.000
name: Dilbert
salary: 70.000
Copyright © Versant Europe 2004
18
JUGS 2004
Lazy Loading
object B
object A
Nur Objekte auf die
wirklich zugegriffen
wird, sind geladen.
object C
object D
Copyright © Versant Europe 2004
19
JUGS 2004
Change Tracking
object B
object A
object C
Nur neue oder
geänderte Objekte
werden bei einem
Commit()
geschrieben
object D
Copyright © Versant Europe 2004
20
JUGS 2004
YearlyJob
public class YearlyJob
{
public static void main (String[] args) {
if (args.length != 1) {
System.out.println ("Usage: YearlyJob <properties>");
System.exit (1);
}
String
propertiesfile = args [0];
PersistenceManagerFactory pmFactory =
JDOFactory.getPersistenceManagerFactory(propertiesfile);
PersistenceManager pm =
pmFactory.getPersistenceManager();
Transaction trx = pm.currentTransaction();
Copyright © Versant Europe 2004
21
JUGS 2004
YearlyJob (Fortsetzung)
trx.begin();
Query query = pm.newQuery( Department.class,
"this.manager.name == empName");
query.declareParameters("String empName");
Collection result = (Collection) query.execute ("Boss");
Iterator it = result.iterator();
while (it.hasNext()) {
typicalDilbertAction((Department) it.next());
}
trx.commit();
pm.close();
Copyright © Versant Europe 2004
22
JUGS 2004
TypicalDilbertAction
private static final float increase = 5000;
private static void typicalDilbertAction(Department dep) {
Iterator employees = dep.getEmployees();
// Manager gets 5000$ more salary
dep.getManager().modifySalary(increase);
float decrease = increase/dep.getNofEmployees();
while (employees.hasNext()) {
Employee emp = (Employee) employees.next();
emp.modifySalary(-decrease);
}
}
Copyright © Versant Europe 2004
23
JUGS 2004
Nach YearlyJob
name: RD
manager:
employees
name: Boss
salary: 75.000
name: Walt
salary: 67.500
name: Dilbert
salary: 67.500
Copyright © Versant Europe 2004
24
JUGS 2004
JDO mit Relationalen Datenbanken
ƒ
ƒ
ƒ
ƒ
Reverse Mapping
Mapping
Architektur der Anwendung
Was bietet Versant JDO Genie
Copyright © Versant Europe 2004
25
JUGS 2004
Ihre relationale Datenbank ist schon da
ƒ Sie wollen mit Java auf
Ihre relationale
Datenbank zugreifen.
ƒ Lassen Sie sich die
Klassen generieren.
RDBMS
Tabellen
Copyright © Versant Europe 2004
26
JUGS 2004
ƒ Versant JDO Genie
Workbench
ƒ Versant JDO
Genie
Workbench
Copyright © Versant Europe 2004
27
JUGS 2004
Relationales Mapping
ƒ Primärschlüssel
ƒ Datastore Identity
ƒ Application Identity
ƒ Mapping von Klassenhierarchien
ƒ Flat
ƒ Vertical
Copyright © Versant Europe 2004
28
JUGS 2004
Relationales Mapping
ƒ Feld Mapping
ƒ Standard Mapping für alle Java Typen
ƒ Kundenspezifische Anpassungen
ƒ Automatische Felder (Datum, Zeit)
ƒ Mapping von Referenzen
ƒ Referenzen auf zusammengesetzte Primärschlüssel
ƒ Kaskadierendes Löschen
ƒ Mapping von Collections
ƒ
ƒ
ƒ
ƒ
JDK 1.5 Generics
Kaskadierendes Löschen
Automatisches Löschen von “Waisen”
Sortierung der Elemente
ƒ auch wenn die Liste eigentlich unsortiert ist
Copyright © Versant Europe 2004
29
JUGS 2004
Queries und Transaktionen
ƒ Queries, JDOQL
ƒ Fetch Groups
ƒ Erweiterungen (JDO 2.0 preview)
ƒ toLowerCase, contains, containsKey, isEmpty, sql
ƒ Transaktionen und Locking
ƒ Pessimistisches Locking
ƒ Optimistisches Locking
Copyright © Versant Europe 2004
30
JUGS 2004
Mehrstufige Architektur ohne JDO
Copyright © Versant Europe 2004
31
JUGS 2004
Cache Management
ƒ Cache pro PersistenceManager ist standard
ƒ Versant JDO Genie bietet einen gemeinsamen
Cache für alle PersistencManager einer
PersistenceManagerFactory
ƒ Benachrichtigungen über Änderungen in einer
Clusterumgebung
ƒ Entfernte PersistenceManager können diesen Cache
ebenfalls nutzen
ƒ Umfangreiches Monitoring
Copyright © Versant Europe 2004
32
JUGS 2004
Mehrstufige Architektur mit JDO Genie
Copyright © Versant Europe 2004
33
JUGS 2004
Copyright © Versant Europe 2004
34
JUGS 2004
Was Sie mitnehmen sollen!
ƒ Transparente Persistenz mit JDO
ƒ Sie wählen die richtige Datenbank
ƒ Keine Beschränkung durch das Mapping
ƒ Sie wählen die richtige Architektur
ƒ Ihr Versant JDO Genie hilft Ihnen bei Ihrer
täglichen Arbeit
Copyright © Versant Europe 2004
35
Herunterladen