12
Modellierung der Modellierung der Zugriffslogik auf Zugriffslogik auf Datenbanktabellen Datenbanktabellen Software Component Technology for Distributed Software Component Technology for Distributed Applications Applications Andreas Fink Andreas Fink

Modellierung der Zugriffslogik auf Datenbanktabellen Software Component Technology for Distributed Applications Andreas Fink

Embed Size (px)

Citation preview

Page 1: Modellierung der Zugriffslogik auf Datenbanktabellen Software Component Technology for Distributed Applications Andreas Fink

Modellierung der Zugriffslogik auf Modellierung der Zugriffslogik auf DatenbanktabellenDatenbanktabellenSoftware Component Technology for Distributed ApplicationsSoftware Component Technology for Distributed Applications

Andreas FinkAndreas Fink

Page 2: Modellierung der Zugriffslogik auf Datenbanktabellen Software Component Technology for Distributed Applications Andreas Fink

InhaltInhalt

Modellierung der Zugriffslogik auf DatenbanktabellenModellierung der Zugriffslogik auf Datenbanktabellen

1.1. EinleitungEinleitung

2.2. Kapselung der Zugriffslogik in Patterns Kapselung der Zugriffslogik in Patterns

2.1 2.1 Table Data GatewayTable Data Gateway

2.22.2 Data Row GatewayData Row Gateway

3.3. Object Relational Mapping mit Jakarta OJBObject Relational Mapping mit Jakarta OJB

2.32.3 Active RecordActive Record

Page 3: Modellierung der Zugriffslogik auf Datenbanktabellen Software Component Technology for Distributed Applications Andreas Fink

Was wir bereits kennen…Was wir bereits kennen…

EinleitungEinleitung

...Transaction Script......Transaction Script...

... ... Domain ModelDomain Model

Patterns zur Patterns zur Kapselung derKapselung der Application Logic +Application Logic + DatenzugriffDatenzugriff in Transaction Script und Domain Modelin Transaction Script und Domain Model

Funktionale Dekomposition der Anwendung, Funktionale Dekomposition der Anwendung, Kapselung der einzelnen Abläufe in TransaktionenKapselung der einzelnen Abläufe in Transaktionen

Modellierung der Application Logic durch eine Modellierung der Application Logic durch eine entsprechende Objekthierarchie innerhalb der entsprechende Objekthierarchie innerhalb der Anwendung.Anwendung.

Page 4: Modellierung der Zugriffslogik auf Datenbanktabellen Software Component Technology for Distributed Applications Andreas Fink

Was fällt uns dabei aufWas fällt uns dabei auf

Viele einfache Zugriffe wiederholen sich Viele einfache Zugriffe wiederholen sich nahezu identisch (Duplication of Code)nahezu identisch (Duplication of Code)

Das DB-Zugriffsystem wird unübersichtlich Das DB-Zugriffsystem wird unübersichtlich und schwer zu Testen / zu optimierenund schwer zu Testen / zu optimieren

Jeder Entwickler muß mit SQL vertraut seinJeder Entwickler muß mit SQL vertraut sein

Tight Coupling zwischen Anwendungslogik Tight Coupling zwischen Anwendungslogik und Datenbankstruktur (Veränderungen!?)und Datenbankstruktur (Veränderungen!?)

Insbesondere bei TS aber auch DMInsbesondere bei TS aber auch DM

Page 5: Modellierung der Zugriffslogik auf Datenbanktabellen Software Component Technology for Distributed Applications Andreas Fink

Wie lösen wir das ProblemWie lösen wir das ProblemKapselung der Zugriffslogik in Objekten Kapselung der Zugriffslogik in Objekten

Tabellen als ObjekteTabellen als Objekte

Rows als ObjekteRows als Objekte

Active RecordsActive Records

Data MapperData Mapper

Page 6: Modellierung der Zugriffslogik auf Datenbanktabellen Software Component Technology for Distributed Applications Andreas Fink

Table Data Table Data GatewayGateway

Eine Klasse repräsentiert eine TabelleEine Klasse repräsentiert eine Tabelle

Simples InterfaceSimples Interface

Einfache Methoden für parametrisierte Einfache Methoden für parametrisierte SQL-AufrufeSQL-Aufrufe

Keine Business LogikKeine Business Logik

ZustandslosZustandslos

Auch Mapping von Views möglichAuch Mapping von Views möglich

Page 7: Modellierung der Zugriffslogik auf Datenbanktabellen Software Component Technology for Distributed Applications Andreas Fink

Row DataRow DataGatewayGateway Bei häufiger Manipulation Bei häufiger Manipulation

einzelner Zeilen (DM)einzelner Zeilen (DM)

Finder Class vonnötenFinder Class vonnöten

Nur einfache AufrufeNur einfache Aufrufe

Keine Application LogicKeine Application Logic

Virtuelle Rows für ViewsVirtuelle Rows für Views

Automatisierte Code Automatisierte Code Generation idealGeneration ideal

Page 8: Modellierung der Zugriffslogik auf Datenbanktabellen Software Component Technology for Distributed Applications Andreas Fink

Active RecordActive Record Bei spezialisiertem Bei spezialisiertem

Zeilenweisen Zugriff doch Zeilenweisen Zugriff doch wieder Business Logic?wieder Business Logic?

Intuitives isomorphes Intuitives isomorphes Mapping für DMMapping für DM

Kompliziertere Kompliziertere SpezialfunktionenSpezialfunktionen

Aber kein Separation of Aber kein Separation of Concerns mehrConcerns mehr

Bei Strukturproblemen Bei Strukturproblemen DataMapper anwendenDataMapper anwenden

Page 9: Modellierung der Zugriffslogik auf Datenbanktabellen Software Component Technology for Distributed Applications Andreas Fink

Object Relational MappingObject Relational Mapping

Domain Model mit KlassenhierarchieDomain Model mit KlassenhierarchieAnwendungsfallAnwendungsfall

Wie bilde ich Klassenbeziehungen:Wie bilde ich Klassenbeziehungen:z.B. ProjectManager isA Employee z.B. ProjectManager isA Employee

automatisiert in Datenbankstruktur ab?automatisiert in Datenbankstruktur ab?

Problem:Problem:

z.B. Apache Jakarta OJB als z.B. Apache Jakarta OJB als kostenlose Alternativekostenlose Alternative

Oder kommerzielles PaketOder kommerzielles Paket

AntwortAntwort

Page 10: Modellierung der Zugriffslogik auf Datenbanktabellen Software Component Technology for Distributed Applications Andreas Fink

3 Verfahrensalternativen3 Verfahrensalternativen Jede Klasse komplett auf eigene TabelleJede Klasse komplett auf eigene Tabelle

(ordentlich aber unperformant)(ordentlich aber unperformant)

Alle Klassen einer Hierarchie in eine Alle Klassen einer Hierarchie in eine TabelleTabelle(unordentlich aber performant)(unordentlich aber performant)

Nur zusätzliche Properties in jeweils Nur zusätzliche Properties in jeweils eigene Tabelleeigene Tabelle(ordentlich aber unperformant)(ordentlich aber unperformant)

Page 11: Modellierung der Zugriffslogik auf Datenbanktabellen Software Component Technology for Distributed Applications Andreas Fink

Implementierung in Jakarta OJBImplementierung in Jakarta OJB Es werden nur Möglichkeit 1 und 2 Es werden nur Möglichkeit 1 und 2

unterstütztunterstützt

Abbildung erfolgt mit XML OJB-Descriptor Abbildung erfolgt mit XML OJB-Descriptor auf Klassenpropertiesauf Klassenproperties

Page 12: Modellierung der Zugriffslogik auf Datenbanktabellen Software Component Technology for Distributed Applications Andreas Fink

Noch Fragen?Noch Fragen?

Vielen Dank für die Vielen Dank für die Aufmerksamkeit!Aufmerksamkeit!