Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

DOAG Regionaltreffen Trier/Saarland Verwendung von TopLink in J2EE Applikationen 09. September 2003 Marcus Keuper, Pfeil GmbH

Ähnliche Präsentationen


Präsentation zum Thema: "DOAG Regionaltreffen Trier/Saarland Verwendung von TopLink in J2EE Applikationen 09. September 2003 Marcus Keuper, Pfeil GmbH"—  Präsentation transkript:

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


Herunterladen ppt "DOAG Regionaltreffen Trier/Saarland Verwendung von TopLink in J2EE Applikationen 09. September 2003 Marcus Keuper, Pfeil GmbH"

Ähnliche Präsentationen


Google-Anzeigen