Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Kilian Dresdner Geändert vor über 8 Jahren
1
DOAG Regionaltreffen Trier/Saarland Verwendung von TopLink in J2EE Applikationen 09. September 2003 Marcus Keuper, Pfeil GmbH mkeuper@pfeilgmbh.de www.pfeilgmbh.de
2
Übersicht Aufgabe Persistenz-Schicht TopLink als O/R-Mapper Realisierung Ausblick
3
Aufgabe Migration einer Client-Server- Applikation nach J2EE
4
Fachl. Anforderungen Ergonomisch Datenintegrität Erweiterung der Funktionalität
5
Techn. Anforderungen Java Applikation J2EE Thin-Client Plattformunabhängig Performant Zukunftssicher Abwärtskompatibel
6
J2EE Architektur Quelle: Sun
7
Persistenz-Schicht Eine Abstraktionsebene, welche die Details der Speicherung in einer Datenbank von Objekt- und Applikationsschicht trennt
8
JDBC JDBC ist kein Persistenz- Framework, aber es bietet die Möglichkeit, auf seiner Basis ein Framework zu erstellen JDBC verwendet SQL und liefert relationale „result sets“ Sehr schnell Hoher Programmieraufwand
9
Entity Beans Langsam Skalierbar Hohe Komplexität Aufwändig zu Warten
10
O/R Mapper Bester Kompromiss zwischen Nutzen und Aufwand OJB (Apache) Hibernate (Sourceforge) CoCo-Base TopLink
11
O/R-Mapper Bytecode-Enhancing Via Reflection Deklarativ (XML)
12
Vorteile eines Persistenz- Frameworks Übernimmt die Übersetzung von Datenbankobjekten in Java-Objekte Stellt eine abstrahierte Abfragesprache zur Verfügung Verwaltet Datenbankanbindungen und Transaktionen
13
Eigenentwicklung ? Meist Projektressourcen > 40 % Hohe Wartungskosten Fehleranfälligkeit in Applikationen Flexibilität bei Applikationsänderung
14
Was ist TopLink ? O/R-Mapper Deklarativer Mapper „proven industry-standard persistence framework“
15
Realisierung Standard-Vorgehensweise Randbedingungen Übernahme des Datenbank- Schema Beispiel
16
Standard-Vorgehen
17
Daten-Modell
18
Beispiel WebPSE Use-Case
19
Beispiel WebPSE Use-Case „Spesen erfassen“ Tabelle „Spesen“ P_ID CHAR(30) M_ID NUMBER(3) BETRAG NUMBER(19,2) DATUM DATE ZWECK VARCHAR2(2000) ZAEHLER NOT NULL NUMBER(22)
20
Java-Klasse public class Spesen { private double betrag; private Date datum; private BigDecimal mitarbeiterId; private String projektId; private BigDecimal spesenId; private String zweck; private Projekt projekt = null; // Rückreferenz auf Projekt public Spesen () { }....... + getter/setter - Methoden
21
TopLink Workbench Klassen Tabelle Mapping-Info
22
TopLink Workbench
23
Konfiguration Möglichkeit des nativen Sequencing Lazy Initialisation via „Indirection“ Verschiedene Mappings möglich „Direct to Field“ „One to One“ „One to Many“ „Many to Many“ Implizite Typkonvertierung Und vieles mehr....
24
Object-Caching Standard-Verhalten Abfrage SQL-Query Ergebnis(se) Existenzprüfung mit Primary Key im Cache Ja “liefere Objekt aus Cache“ Nein Datenbank-Abfrage, „erstelle Objekt im Cache und liefere es zurück“
25
Caching-Strategien None Always Only if newer Version
26
Metadaten-Architektur Mit Hilfe der Workbench werden Metadaten im XML-Format erzeugt Mapping-Informationen sind nicht im Objekt gespeichert TopLink verändert weder das Objektmodell noch das Datenbank- Schema Schnelles Anpassen Änderungen (Datenbank)
27
Projekt-Deskriptor Deskriptoren
28
Beispiel WebPSE Import der generierten Metadaten mit Hilfe einer Java-Klasse Herstellen der Datenbankanbindung Datanbankanbindung im Kontext der Applikation Serviceorientierte Architektur Use-Cases in Struts-Actions implementiert Ergebnisse werden in FormBeans gewrappt und auf JSPs ausgegeben
29
Abfragen 1 public Spesen readSpesen(BigDecimal id) { Spesen spe = new Spesen(); ExpressionBuilder builder = new ExpressionBuilder(); Expression expr = builder.get("spesenId").equal(id); spe = (Spesen)session.readObject(Spesen.class,expr); return spe; } Vorteil: Kein einziges SQL-Statement nötig Kann aber bei Bedarf in der „Mapping Workbench“ konfiguriert werden Lesen aus DB/Cache
30
Abfragen 2 public Vector spesenAnzeigen(String projektId) { Vector vecSpesen = new Vector(); ReadAllQuery query = new ReadAllQuery(Spesen.class); ExpressionBuilder builder = new ExpressionBuilder(); Expression expr1 = builder.get("projektId").equal(projektId); Expression expr2 = builder.get("mitarbeiterId").equal(userId); Expression finalExpr = expr1.and(expr2); query.setSelectionCriteria(finalExpr); query.addAscendingOrdering("datum"); vecSpesen =(Vector)session.executeQuery(query); return vecSpesen; } Erstellen der Abfrage Sortieren
31
Datensicht FormBean Actions
32
Zusammenfassung Reduzierung des Entwicklungsaufwands Intuitive graphische Oberfläche zum Entwickeln (Mapping Workbench) 100% Pure Java Anbindung an fast jede relationale und nicht-relationale Datenbank durch passende JDBC-Treiber möglich
33
Alternativen Open Source OJB (Apache) Hibernate (Sourceforge) Commercial TopLink CoCo-Base
34
Ausblick Komplette Migration der Applikation Komplettes Abschalten der ‚alten‘ Client-Server-Applikation Zugang zur Applikation über die Firmen-Homepage
35
Schluss Schlechte Dokumentation/Kompatibilität Hoher Einarbeitungsaufwand Durch Migration höhere technologische Qualität Leichte Wartbarkeit Leichte Anpassung
36
DOAG Regionaltreffen Trier/Saarland Verwendung von TopLink in modernen J2EE Applikationen 09. September 2003 Marcus Keuper, Pfeil GmbH mkeuper@pfeilgmbh.de www.pfeilgmbh.de
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.