OR-Fehlanpassung - SQLJ
This is a modal window.
The media could not be loaded, either because the server or network failed or because the format is not supported.
Formal Metadata
Title |
| |
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 | 10.5446/65033 (DOI) | |
Publisher | ||
Release Date | ||
Language |
Content Metadata
Subject Area | ||
Genre | ||
Abstract |
| |
Keywords |
Datenbanken20 / 93
3
16
19
20
28
32
39
40
41
49
52
54
58
62
66
70
74
81
83
86
00:00
VideoconferencingAdaptive behaviorComputer animation
00:12
Relational databaseComputer programmingOrder (biology)Point (geometry)Java applet
00:21
CodeString (computer science)CountingDatabaseChainError messageType theoryCodeNumberSinc functionVariable (mathematics)Pointer (computer programming)TypprüfungSoftware maintenanceExtension (kinesiology)String (computer science)LaufzeitZugriffQuery languageComputer animation
01:27
Field extension
01:34
DatabaseSQLJJDBCSQLDevice driverBytecodeCompilerMainframe computerCountingString (computer science)CodeZugriffUpdateOracle <Marke>AlgebraAbbildung <Physik>Object-relational mappingEndliche ModelltheorieCurveTheory of relativityFunctional (mathematics)Software developerMobile appProfil (magazine)Object (grammar)Data managementThermal expansionDatabaseRun time (program lifecycle phase)Source codeCorrespondence (mathematics)Variable (mathematics)System callMultiplication signError messagePhysical systemNumberPreprocessorFree variables and bound variablesSelectivity (electronic)BytecodeJava appletCompilerTerm (mathematics)CodePoint (geometry)Projective planeObject-oriented programmingVideoconferencingINTEGRALComputer programmingRun-time systemMachine codeMoment (mathematics)Information securityData structureField extensionRoute of administrationUpdateDatabaseScientific modellingObjektorientierungComputer animationXML
Transcript: German(auto-generated)
00:05
Hallo, in diesem Video geht es um Lösungsansätze zur Überwindung der objektrelationalen Fehlanpassung. Ausgangspunkt ist JDBC, um aus einem Java-Programm heraus mit einer relationalen Datenbank zu kommunizieren.
00:21
Hier sehen Sie ein Beispiel. Durch dieses Beispiel soll die Anzahl aller Kunden ermittelt werden. Auffällig ist, dass für die Abfrage eines einzelnen Wertes bereits sechs Zeilen Code erforderlich sind. Das liegt daran, dass JDBC keinen direkten Zugriff auf Java-Variablen bietet.
00:40
Der manuell codierte Code ist fehleranfällig. Dieser Tippfehler in dem Code wird erst zur Laufzeit erkannt, da JDBC keine Syntaxprüfung von den Zeichenketten vornimmt. Es wird auch keine Prüfung gegenüber dem Datenbankschema vorgenommen. Des Weiteren wird auch keine Prüfung auf
01:00
Typkompatibilität durchgeführt. Das heißt, wenn beispielsweise ein Nullwert zurückgegeben wird, so wird nicht geprüft, ob dieser Nullwert richtig konvertiert wird. Das führt dann dazu, dass manuell erstellter JDBC-Code fehleranfällig und wartungsintensiv ist. Insbesondere dann, wenn das Schema
01:24
der Datenbank geändert wird. Der nächste Ansatz ist eingebettet SQL, was eigentlich eine Erweiterung von JDBC ist. Das Grundprinzip bei SQLJ ist, dass sie einen Java-Quelltext haben mit zugehörenden SQLJ-Anweisungen.
01:44
Diese werden übertragen in einen Java-Quelltext mit zugehörenden JDBC-Aufrufen. Das heißt, die JDBC-Aufrufe werden generiert und gleichzeitig ein SQLJ-Profil angelegt. Das SQLJ-Profil beschreibt die SQL-Befehlsbeschreibung,
02:04
die zugehörenden Datenstrukturen und benötigte Funktionsaufrufe. Während des Übersetzungsprozesses wird auch gleichzeitig ein Syntaxcheck durchgeführt gegenüber der Schema der zugehörenden Datenbank. Dadurch können bereits zur Entwicklungszeit Fehler in den
02:22
SQL-Befehlen entdeckt werden. Der Java-Quelltext wird dann über den Java-Compiler in Bytecode umgewandelt. Der Code kann dann ausgeführt werden in der SQLJ-Laufzeitumgebung. Die SQLJ-Laufzeitumgebung ist abhängig
02:43
von dem jeweiligen Datenmanagementsystem. Der Vorteil der Verwendung von eingebettetem SQL ist, dass direkt Variablen in der Host-Sprache, also hier in Java, genutzt werden können. Das sehen Sie hier an diesem Beispiel.
03:02
Oben haben Sie den zugehörenden Java-Code, um beispielsweise die Anzahl aller Kunden zu ermitteln. In den SQLJ-Code sehen Sie, dass sich eine Host-Variable in Java definieren, Anzahl. Dann kommt die Präprozessor-Anweisung mit dem zugehörenden Select-Statement und als Platzhalter Doppelpunkt
03:24
Anzahl ist dann die Referenz auf die zugehörende Java-Variate. Dieser Code ist natürlich sehr schön kompakt. Durch den Präprozessor wird dieser Code umgesetzt in ein generiertes JDBC-Code. Hier sehen Sie ein Beispiel eines Updates und dieser Code ist relativ schwer zu lesen. Oben sehen Sie
03:45
den zugehörenden Präprozessor-Befehl und den dazu generierten JDBC-Code. Dieser Code ist einerseits schlecht lesbar und andererseits führt das dazu, dass in den eigentlichen Quelltexten lauter Compiler-Fehler durch die
04:03
Verwendung bei IDEs angezeigt bekommen, weil diese Präprozessor- Befehl. Ein weiterer Schwachpunkt ist, dass Sie an einen Datenbank-Hersteller über die Verwendung des Präprozessors gebunden sind. Das heißt, wenn Sie
04:21
Projekte haben, wo Sie nicht nur auf eine Datenbank zugreifen oder wechselseitig auch auf andere Datenbanken, haben Sie das Problem, dass Sie dann nicht mehr mit diesem Präprozessor eines Herstellers zurechtkommen. Weitere Lösungsansätze ist einmal der Einsatz von objektrelationalen Mapping-Frameworks, welches in einem nächsten Video
04:43
behandelt wird. Ein weiterer Ansatz ist die Entwicklung von objektorientierten Datenbanken, bei denen ganz auf der Einsatz des relationalen Modells verzichtet wird. In diesem Fall wird die Programmiersprache, beispielsweise Java, erweitert, um Möglichkeiten der
05:02
Persistierung und der Integritätssicherung. Allerdings zeigte sich dabei, dass dieser Ansatz nur für kleine Datenmengen praktikabel ist, da in dem Augenblick, wenn Sie ein Objekt aus der Datenbank laden, gleich alle anderen Objekte, die dieses Objekt referenziert, mitgeladen werden.
05:24
Objektorientierte Datenbanken sind damit nur sinnvoll nutzbar, beispielsweise in mobilen Applikationen. Ein weiterer Ansatz ist die Erweiterung des relationalen Modells um Objekte und führt zu der Entwicklung von objektrelationalen Datenbank-Management-Systemen.