| Inhaltsverzeichnis | 5 |
---|
| Vorwort | 9 |
---|
| Motivation | 9 |
| Wer sollte dieses Buch lesen? | 10 |
| Was soll mithilfe dieses Buchs gelernt werden? | 10 |
| Sourcecode und ausführbare Programme | 11 |
| Aufbau dieses Buchs | 12 |
| Konventionen | 13 |
| Danksagung | 15 |
| Anregungen und Kritik | 16 |
| 1 Einstieg in XML und JSON | 17 |
---|
| 1.1 Basiswissen XML | 18 |
| 1.1.1 Bestandteile und Aufbau eines XML-Dokuments | 21 |
| 1.1.2 Validierung eines XML-Dokuments | 26 |
| 1.2 XML-Verarbeitung mit JAXP | 30 |
| 1.2.1 Einfaches Parsing mit SAX | 31 |
| 1.2.2 Komplexere Parsing-Aufgaben mit SAX | 34 |
| 1.2.3 Parsing mit DOM | 37 |
| 1.2.4 Verarbeiten und Speichern mit DOM | 41 |
| 1.2.5 StAX als Alternative zu SAX oder DOM? | 45 |
| 1.2.6 SAX, StAX oder DOM? | 52 |
| 1.2.7 XPath im Überblick | 53 |
| 1.2.8 XSLT im Überblick | 58 |
| 1.2.9 XMLEncoder und XMLDecoder im Überblick | 62 |
| 1.3 XML-Verarbeitung mit JAXB | 65 |
| 1.3.1 Schritt 1: Passende Java-Klassen erstellen | 66 |
| 1.3.2 Schritt 2: Marshalling und Unmarshalling | 70 |
| 1.3.3 JAXB: Stärken und Schwächen | 74 |
| 1.4 JAXB und StAX in Kombination | 75 |
| 1.4.1 Rekonstruktion von Objekten mit JAXB und StAX | 75 |
| 1.4.2 Vergleich zu SAX, DOM und JAXB | 78 |
| 1.4.3 On-the-Fly-Modifikation von Objekten | 81 |
| 1.5 JSON – das bessere XML? | 83 |
| 1.5.1 Crashkurs JSON | 83 |
| 1.5.2 JSON mit Java verarbeiten | 84 |
| 1.5.3 JSON vs. XML | 89 |
| 1.6 Weiterführende Literatur | 90 |
| 2 Einführung in Persistenz und relationale Datenbanken | 91 |
---|
| 2.1 Grundlagen zur Persistenz | 92 |
| 2.1.1 Beschränkungen einfacher Persistenzlösungen | 92 |
| 2.1.2 Modelle zur Persistierung von Objekten | 94 |
| 2.1.3 Speicherung von Daten in relationalen Datenbanken | 95 |
| 2.2 Abbildung zwischen Objekt- und Datenbankmodell | 102 |
| 2.2.1 Abbildung von Referenzen | 104 |
| 2.2.2 Abbildung von Assoziationen und Aggregationen | 107 |
| 2.2.3 Abbildung von Vererbung | 110 |
| 2.3 Das Datenbanksystem HSQLDB im Kurzüberblick | 114 |
| 2.4 SQL-Grundlagen | 116 |
| 2.4.1 DDL – Definition von Tabellen | 117 |
| 2.4.2 DQL – Datenabfrage | 123 |
| 2.4.3 DML – Datenmanipulation | 127 |
| 2.5 Ausfallsicherheit und Replikation | 130 |
| 2.6 Weiterführende Literatur | 131 |
| 3 Persistenz mit JDBC | 133 |
---|
| 3.1 Datenbankzugriffe per JDBC | 133 |
| 3.1.1 Schritte zur Abfrage von Datenbanken | 136 |
| 3.1.2 Besonderheiten von ResultSet | 144 |
| 3.1.3 Abfrage von Metadaten | 150 |
| 3.1.4 Probleme bei der Ausführung von Statements | 158 |
| 3.1.5 Das Interface PreparedStatement | 161 |
| 3.1.6 Transaktionen in JDBC | 164 |
| 3.2 Grundlagen zum ORM mit JDBC | 167 |
| 3.2.1 Rekonstruktion von Objekten | 167 |
| 3.2.2 Zugriffe mit einem Data Access Object (DAO) | 172 |
| 3.3 Weiterführende Literatur | 175 |
| 4 Persistenz mit JPA | 177 |
---|
| 4.1 Grundlagen zum ORM und zum JPA | 178 |
| 4.2 Einführung in JPA an einem Beispiel | 180 |
| 4.2.1 Definition persistenter Klassen | 180 |
| 4.2.2 Die Konfigurationsdatei persistence.xml | 183 |
| 4.2.3 Datenbankzugriffe per JPA in Java SE | 184 |
| 4.2.4 Lebenszyklus von Entitäten (Entity Lifecycle) | 189 |
| 4.2.5 Datenbankmodell | 191 |
| 4.2.6 Vorteile der konfigurativen Persistenz | 193 |
| 4.3 JPQL im Überblick | 194 |
| 4.3.1 Syntax von JPQL | 194 |
| 4.3.2 Besondere Arten von Queries | 197 |
| 4.3.3 Abfragen mit JPQL ausführen | 198 |
| 4.3.4 Typsichere Abfragen und das Criteria API | 204 |
| 4.4 DAO-Funktionalität mit JPA | 207 |
| 4.4.1 CRUD-Funktionalität | 207 |
| 4.4.2 Einsatz des DAO | 210 |
| 4.5 Fortgeschritteneres ORM mit JPA | 212 |
| 4.5.1 Abbildung von Assoziationen | 213 |
| 4.5.2 Abbildung von Vererbungshierarchien | 216 |
| 4.5.3 Verarbeitung der Typen aus JSR-310: Date and Time | 220 |
| 4.5.4 Bean Validation im Einsatz | 223 |
| 4.6 Transaktionen und Locking | 227 |
| 4.6.1 Isolationslevel und Effekte | 227 |
| 4.6.2 Problemkontext | 228 |
| 4.6.3 Optimistic Locking | 229 |
| 4.7 Caching in JPA | 232 |
| 4.8 Fazit | 234 |
| 4.9 Weiterführende Literatur | 234 |
| 5 NoSQL-Datenbanken am Beispiel von MongoDB | 235 |
---|
| 5.1 Einführung und Überblick | 235 |
| 5.2 Einführung MongoDB | 241 |
| 5.2.1 Analogie von CRUD (RDBMS) zu IFUR (MongoDB) | 243 |
| 5.2.2 Komplexere Abfragen | 248 |
| 5.2.3 MongoDB und Transaktionen | 251 |
| 5.3 Ausfallsicherheit und Skalierbarkeit | 252 |
<