We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

OR-Fehlanpassung - Einführung

00:00

Formal Metadata

Title
OR-Fehlanpassung - Einführung
Title of Series
Number of Parts
93
Author
License
CC Attribution 4.0 International:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Identifiers
Publisher
Release Date
Language

Content Metadata

Subject Area
Genre
Abstract
EILD - In diesem Video geht es um Objekte und Relationen und wie man diese zusammenbringt.
Keywords
62
Object (grammar)VideoconferencingTheory of relativityAdaptive behaviorError messageComputer animation
Relational databaseObject-oriented programming
Declarative programmingEncapsulation (object-oriented programming)RelationenalgebraObject-oriented programmingRelational databaseScientific modellingAbbildung <Physik>Social classTable (information)Encapsulation (object-oriented programming)AlgebraObject (grammar)Data typeLengthDifferent (Kate Ryan album)Operator (mathematics)Inheritance (object-oriented programming)HierarchyData structureNatural languageKey (cryptography)System callEndliche ModelltheorieAttribute grammarProgrammschleifeAdaptive behaviorRight angleElement (mathematics)AlgebraCurvatureIntrusion detection systemDiagramPointer (computer programming)Level (video gaming)Error messageTheory of relativityJava appletContrast (vision)Computer programmingInsertion lossComputer animation
Software developer
JDBCString (computer science)SQLResultantDatabaseCodePointer (computer programming)Computer programmingBlock (periodic table)Connected spaceTelecommunicationNatural languageEndliche ModelltheorieMixture modelDifferent (Kate Ryan album)Java appletAdaptive behaviorSoftware frameworkStatement (computer science)Attribute grammarParameter (computer programming)Data conversionObject (grammar)Correspondence (mathematics)Set (mathematics)Single-precision floating-point formatLine (geometry)Address spaceRelational databaseElectronic mailing listArithmetic meanError messageMultiplication signPasswordSelectivity (electronic)Library (computing)Device driverSocial classCodeQuery languageRow (database)While-SchleifeKommunikationLaufzeitScientific modellingUniform resource locatorComputer animationXML
Hallo und willkommen zu dem Video zur objekt-relationalen Fehlanpassung. In diesem Video geht es um Objekte und Relationen und wie man diese zusammenbringt. Wir haben nämlich zwei Welten. Auf der einen Seite die objektorientierte Welt, beispielsweise mit Java,
und auf der anderen Seite relationale Datenbanken. Jetzt ist da natürlich die Frage, wie können wir diese beiden Welten zusammenbringen? Auf der einen Seite haben wir die relationalen Datenbanken. Objekte der realen Welt werden durch Relation oder speziell durch Tabellen abgebildet
und abgefragt über die Relationale Anfragesprache SQL. Objekte auf der anderen Seite kennen das Klassenprinzip und ordnen jeder Klasse auch eigene Methoden zu.
Wir haben das Konzept der Vererbung und der Kapselung, also das Geheimnisprinzip. Dieses Geheimnisprinzip ist in SQL nicht vorhanden. Hat man beispielsweise das Zugriffsrecht auf eine Tabelle, beispielsweise Kunde, so sieht man alle Kunden auf einmal.
Ein objektorientiertes Modell können wir auch als EER-Diagramm darstellen oder als UML-Diagramm. Bei der Abbildung eines solchen Modells auf das relationale Modell kann es zu einem Strukturverlust kommen. Beispielsweise kann die Vererbungsbeziehung nicht direkt abgebildet werden.
Hinzu kommen noch weitere Unterschiede in den Datentypen. Beispielsweise haben wir in einer relationalen Datenbank Datentypen mit einer festen Länge, die sich von Attribut zu Attribut unterscheiden können. Referenzen werden über wertbasierte Fremsschlüssel abgebildet anstelle von Pointer und Referenzen auf Objekteides.
Und wir haben eine flache Struktur im Gegensatz zu einer tiefgeschachtelten Struktur, wie sie durch die Abbildung durch Objekte und Klassenhierarchien sich ergibt. Hinzu kommt dann noch das fehlende Verhalten.
Da wir nur die Operation der relationalen Algebra zur Verfügung haben, um mit unseren Relationen zu arbeiten. Das heißt, solche Elemente wie Rekursionen, Schleifen oder auch nur ein Methodenaufruf auf Select-Ebene ist in SQL nicht direkt möglich.
Dieser Unterschied wird als objektrelationale Fehlanpassung bezeichnet. Ein Objekt kann nicht direkt auf das relationale Modell abgebildet werden. Nun gibt es aber durchaus Java-Programme, die auf die Daten in einer relationalen Datenbank zugreifen wollen.
Das heißt, diese Fehlanpassung müssen wir überwinden. Der erste Schritt, um das zu erreichen, war die Entwicklung von JDPC, sodass hier durch die ersten Steine im Fluss gelegt werden, um von der einen Seite zur anderen Seite zu gelangen.
Das ist das Grundprinzip von JDBC. JDBC ist eine API, die Klassen und Methoden bereitstellt, um mit einer Datenbank zu kommunizieren. Dazu muss die zugehörende Treiberlibrary eingebunden werden in das Java-Programm. Wenn dies erfolgt ist, kann über die JDBC-Befehle eine Verbindung zur Datenbank hergestellt werden
und vom Java-Programm ein Statement, also ein SQL-Befehl, an die Datenbank geschickt werden. Die Datenbank sendet dann beispielsweise eine Ergebnismenge zurück an das Java-Programm.
Am Ende wird dann die Verbindung, also die Connection zur Datenbank wieder geschlossen. Schauen wir uns ein Beispiel an. Als Erstes der Rahmen für den Aufbau der Verbindung, der Connection.
Das heißt, als Erstes wird der Datenbanktreiber registriert und die Verbindung aufgebaut mit der passenden URL der UserID und dem Passwort. Am Ende muss die Verbindung geschlossen werden. Zur Übersichtlichkeit ist hier der zugehörende TwiCatch-Block nicht mit aufgeführt.
Dies wird dann ergänzt, um den eigentlichen Code mit der Datenbank zu kommunizieren. Wenn wir beispielsweise eine Kundenliste erstellen wollen, wird zunächst ein Statement erstellt, mit der Methode executeQuery, an die Datenbank gesendet und ein ResultSet, also eine Ergebnismenge zurückgeliefert.
Das ResultSet, also die Ergebnismenge, muss jetzt Zeile für Zeile durchlaufen werden. Das erfolgt hier in der While-Schleife. Und innerhalb der While-Schleife wird dann jeder einzelne Datensatz in ein zugehörendes Kundenobjekt konvertiert.
In dem Befehl Kundeset-Kundennummer haben wir als Argument rsGetString1. Und die 1 referenziert dann auf das erste Attribut in der zugehörenden Select-Anfrage. 2 dann auf das zweite Attribut, das wäre der Nachname, 3 auf die Anrede.
Durch die Abfrage rsWasNull wird überprüft, ob in dem Attributanrede ein Nullwert steht oder nicht. Denn ein Nullwert in der relationalen Datenbank hat eine andere Bedeutung als ein Nullpointer in Java.
Deshalb müssen wir hier an dieser Stelle bei der Anrede abfragen, ob sich in der Anrede ein Nullwert befindet. Und das in das objektorientierte Modell übertragen. Wenn die Anrede Null ist, hieße das beispielsweise, dass es sich um einen Firmenkunden handelt.
Das heißt, hier kann dann das zugehörende Attribut im Objekt Kunde auf True gesetzt werden. Abschließend wird dann dieses Kundenobjekt in eine zugehörende Array-List mit den ganzen Kundenobjekten eingefügt.
Was haben wir jetzt hier an dieser Stelle gemacht? Wir haben insgesamt eine Konvertierung durchgeführt. Nämlich eine Konvertierung vom relationalen Modell hin zum objektorientierten Modell. An diesem Beispiel kann man sehen, dass hier eine Vermischung von Sprachkonzepten auftritt,
was nicht unbedingt zur Lesbarkeit und Wartbarkeit des Codes beiträgt. Insbesondere dann, wenn sich beispielsweise das Schema in der Datenbank ändert, dann muss entsprechend der gesamte Code angepasst werden. Und damit auch die Konvertierung des relationalen Modells hin zum objektorientierten Modell.
Eine weitere Schwierigkeit, die hier auftritt, ist, dass das Select Statement in Plain Text vorliegt. Schreibfehler und Tippfehler, die hier auftreten, werden erst zur Laufzeit erkannt. Sie können sich vorstellen, dass das vielfach zu Fehlern geführt hat.
Also wurden darauf aufbauend neue Lösungsmöglichkeiten entwickelt, um mit dieser objektrelationalen Fehlanpassung umzugehen. Das heißt, zusammenfassend haben wir hier eine Fehlanpassung,
also unterschiedliche Konzepte auf der einen Seite Java objektorientiert, auf der anderen Seite das relationale Modell. Und diese beiden Konzepte sind nicht miteinander direkt kompatibel. Mit JDBC sind erste Ansätze entwickelt worden, um eine Kommunikation zwischen diesen beiden Konzepten herzustellen.
Die Praktikabilität ist eingeschränkt, weil vieles manuell codiert werden muss und das dann natürlich fehleranfällig ist.