Sie sind hier
E-Book

Der Java-Profi: Persistenzlösungen und REST-Services

Datenaustauschformate, Datenbankentwicklung und verteilte Anwendungen

AutorMichael Inden
Verlagdpunkt
Erscheinungsjahr2016
Seitenanzahl404 Seiten
ISBN9783864919602
FormatPDF/ePUB
KopierschutzWasserzeichen/DRM
GerätePC/MAC/eReader/Tablet
Preis36,90 EUR
Wenn Sie bereits komplexe Java-Applikationen für den Desktop-Bereich schreiben, können Sie sich an Unternehmensanwendungen als weitere Herausforderung wagen. Dabei kommen Sie früher oder später mit Datenbanken, den Datenformaten XML oder JSON und auch mit verteilten Applikationen in Berührung. Das notwendige Wissen für einen effizienten Einstieg erlangen Sie in diesem Buch. Michael Inden macht Sie zunächst mit den Grundlagen der professionellen Erstellung von Unternehmensanwendungen vertraut und vermittelt Ihnen substanzielle Kenntnisse zum Informationsaustausch basierend auf XML oder JSON. Darüber hinaus bietet er eine fundierte Einführung in die Persistenz mit relationalen Datenbanken mithilfe von SQL, JDBC und JPA. Schließlich thematisiert der Autor die Datenverarbeitung mit den immer populärer werdenden NoSQL-Datenbanken anhand von MongoDB. Im Praxisalltag kommt oftmals der Wunsch auf, Funktionalität auch im Netzwerk bereitzustellen. Hierfür existieren vielfältige Technologien. Das Buch fokussiert auf die populären 'RESTful Webservices' und zeigt Ihnen exemplarisch die Entwicklung von einfachen Client-Server-Applikationen mithilfe von JAX-RS.

Dipl.-Inform. Michael Inden ist Oracle-zertifizierter Java-Entwickler für JDK 6. Nach seinem Studium in Oldenburg war er lange Zeit als Softwareentwickler und -architekt bei verschiedenen internationalen Firmen tätig. Dabei hat er über 15 Jahre Erfahrung beim Entwurf objektorientierter Softwaresysteme gesammelt, an diversen Fortbildungen und an mehreren Java-One-Konferenzen in San Francisco teilgenommen. Sein besonderes Interesse gilt dem Design qualitativ hochwertiger Applikationen mit ergonomischen, grafischen Oberflächen sowie dem Coaching von Kollegen.

Kaufen Sie hier:

Horizontale Tabs

Leseprobe

Vorwort


Zunächst einmal bedanke ich mich bei Ihnen, dass Sie sich für dieses Buch entschieden haben. Hierin finden Sie Informationen zu den Datenaustauschformaten XML und JSON sowie zum Zugriff auf Datenbanken mit JDBC und JPA als auch auf MongoDB. Darüber hinaus werden RESTful Webservices mit JAX-RS und Jersey behandelt. Diese für Unternehmensanwendungen wichtigen Themen möchte ich Ihnen anhand von praxisnahen Beispielen näherbringen. Dabei kommen die vielfältigen Neuerungen aus JDK 8 zum Einsatz, um die Beispiele prägnanter zu machen. Für einen fundierten Einstieg in Java 8 möchte ich Sie auf meine Bücher »Java 8 – Die Neuerungen« [9] oder alternativ »Der Weg zum Java-Profi« [8] verweisen. Beide können ergänzend, aber auch unabhängig von diesem Buch gelesen werden.

Motivation


Wenn Sie bereits komplexe Java-Applikationen für den Desktop-Bereich schreiben und sich vertraut mit der Sprache Java fühlen, dann sind Sie schon recht gut für das Berufsleben gerüstet. Allerdings kommen Sie dort früher oder später mit Datenbanken, dem Informationsaustausch basierend auf XML oder JSON und vermutlich auch verteilten Applikationen in Berührung. Darunter versteht man Programme, die auf mehreren JVMs (und gewöhnlich somit auf mehreren Rechnern) ausgeführt werden. Um zusammenzuarbeiten, müssen diese miteinander kommunizieren, wodurch ganz neue Herausforderungen, aber auch Möglichkeiten entstehen.

Vielleicht haben Sie sich bisher auf den Desktop-Bereich konzentriert und wollen nun per JDBC oder JPA mit einer Datenbank kommunizieren. Dann erhalten Sie in diesem Buch eine fundierte Einführung in die Persistenz mit Java, SQL, JDBC und JPA. Oftmals benötigen Sie aber weiteres Know-how, da die Programmanwender zunehmend anspruchsvoller werden: Neben einer gut bedienbaren Benutzeroberfläche kommt für viele Applikationen der Wunsch auf, deren Funktionalität – zumindest teilweise – auch im Netzwerk bereitzustellen. Dazu existieren vielfältige Technologien. In diesem Buch wollen wir uns auf die populären RESTful Webservices konzentrieren und mit der Programmierung einer sogenannten Client-Server-Applikation beschäftigen.

Wie Sie sehen, sind Unternehmensanwendungen ein spannendes, aber auch weitreichendes Feld, was deutlich mehr Anforderungen als reine Java-SE-Anwendungen an den Entwickler stellt. Dieses Buch gibt Ihnen einen fundierten Einstieg. Wie schon bei meinem Buch »Der Weg zum Java-Profi« war es auch diesmal mein Ziel, ein Buch zu schreiben, wie ich es mir selbst immer als Hilfe gewünscht habe, um mich auf die Herausforderungen und Aufgaben im Berufsleben vorzubereiten.

Wer sollte dieses Buch lesen?


Dieses Buch ist kein Buch für Programmierneulinge, sondern richtet sich an all diejenigen Leser, die solides Java-Know-how besitzen und ihren Horizont auf die interessante Welt der Unternehmensanwendungen erweitern wollen. Dazu werden die dafür benötigten Themen Datenaustauschformate (XML, JSON) sowie Datenbankentwicklung (RDBMS, SQL, JDBC, JPA und auch NoSQL-DBs mit MongoDB) sowie die Kommunikation in verteilten Applikationen mit REST-Webservices (JAX-RS) vorgestellt.

Dieses Buch richtet sich im Speziellen an zwei Zielgruppen:

  1. Zum einen sind dies engagierte Hobbyprogrammierer, Informatikstudenten und Berufseinsteiger, die Java als Sprache beherrschen und nun neugierig auf die zuvor genannten Themen sind.

  2. Zum anderen ist das Buch für erfahrene Softwareentwickler und -architekten gedacht, die ihr Wissen ergänzen oder auffrischen wollen.

Was soll mithilfe dieses Buchs gelernt werden?


Dieses Buch zeigt und erklärt einige wesentliche Themen, die bei der Realisierung von Unternehmensapplikationen von Bedeutung sind. Sollte ein Thema bei Ihnen besonderes Interesse wecken und Sie weitere Informationen wünschen, so finden sich in den meisten Kapiteln Hinweise auf weiterführende Literatur.

Zwar ist Literaturstudium hilfreich, aber nur durch Übung und Einsatz in der Praxis können wir unsere Fähigkeiten signifikant verbessern. Deshalb ermuntere ich Sie, die gezeigten Beispiele (zumindest teilweise) durchzuarbeiten. Manchmal werde ich bei der Lösung eines Problems bewusst zunächst einen Irrweg einschlagen, um anhand der anschließend vorgestellten Korrektur die Vorteile deutlicher herauszustellen. Mit dieser Darstellungsweise hoffe ich, Ihnen mögliche Fallstricke und Lösungen aufzeigen zu können.

Des Weiteren lege ich Wert darauf, auch den kleinen, scheinbar nicht ganz so wichtigen Dingen ausreichend Beachtung zu schenken. Zum Beispiel ist es von großem Nutzen, wenn Klassen, Methoden, Attribute usw. einen sinnvollen Namen tragen.

Auch auf der Ebene des Designs lässt sich einiges falsch machen. Die Komplexität in der zu modellierenden Fachlichkeit dient häufig als Ausrede für konfuse und verwirrende Lösungen. Beim professionellen Entwickeln sollte man aber viel Wert auf klares Design legen. Grundsätzlich sollte alles möglichst einfach und vor allem gut verständlich gehalten werden, sodass eine ausgereifte und wartbare Lösung entsteht.

Sourcecode und ausführbare Programme


Da der Fokus des Buchs auf dem praktischen Nutzen und der Vorbereitung auf das Berufsleben bzw. dessen besserer Meisterung liegt, werden praxisnahe Beispiele vorgestellt. Um den Rahmen des Buchs nicht zu sprengen, stellen die Listings häufig nur Ausschnitte aus lauffähigen Programmen dar – zum besseren Verständnis sind wichtige Passagen dort mitunter fett hervorgehoben. Die in den Listings abgebildeten Sourcecode-Fragmente stehen als kompilierbare und lauffähige Programme (Gradle-Tasks) auf der Webseite zu diesem Buch www.dpunkt.de/java-persistenz zum Download bereit. Der Programmname bzw. der Name des ausführbaren Gradle-Tasks wird in Kapitälchenschrift, etwa FIRSTSAXEXAMPLE, angegeben.

Neben dem Sourcecode befindet sich auf der Webseite ein Eclipse-Projekt, über das sich alle Programme ausführen lassen. Idealerweise nutzen Sie dazu Eclipse 4.5 oder neuer, weil diese Version der IDE bereits Java 8 unterstützt und die Beispiele dieses Buchs immer wieder auch Funktionalitäten aus JDK 8 nutzen.

Neben dem Eclipse-Projekt wird eine Datei build.gradle mitgeliefert, die den Ablauf des Builds für Gradle beschreibt. Dieses Build-Tool besitzt viele Vorzüge wie die kompakte und gut lesbare Notation und vereinfacht die Verwaltung von Abhängigkeiten enorm. Gradle wird im Anhang A einführend beschrieben. Als Grundlage für spätere Ergänzungen dient folgende Datei build.gradle, die JUnit als Abhängigkeit definiert und trotz der Kürze schon ein vollständiges Release als jar-Datei namens java-profi-db-rest.jar erzeugt:

apply plugin: 'java'
apply plugin: 'eclipse'

sourceCompatibility=1.8

// create special jar containing the starter app
jar
{
    baseName = "java-profi-db-rest"

    manifest
    {
        attributes ( "Main-Class" : "de.inden.starter.ApplicationStarter" )
    }
}

repositories
{
    mavenCentral()
}

dependencies
{
    testCompile 'junit:junit:4.11'

    // Weitere Abhängigkeiten hier eintragen
}

Aufbau dieses Buchs


Nachdem Sie nun einen groben Überblick über den Inhalt dieses Buchs haben, möchte ich die Themen der einzelnen Kapitel kurz vorstellen.

Kapitel 1 – Einstieg in XML und JSON

Weil proprietäre Formate beim Datenaustausch oftmals Probleme bereiten, spielt in heutigen Applikationen die standardisierte Darstellung von Daten eine immer größere Rolle. Kapitel 1 stellt die Datenaustauschformate XML und JSON vor, die die Interoperabilität zwischen verschiedenen Programmen erleichtern und sogar einen Austausch erlauben, wenn diese Programme in unterschiedlichen Programmiersprachen erstellt wurden.

Kapitel 2 – Einführung in Persistenz und relationale Datenbanken

Dieses Kapitel stellt wichtige Grundlagen zu Datenbanken und zu SQL vor. Insbesondere wird auch auf Möglichkeiten der Transformation von Objekten in entsprechende Repräsentationen in Datenbanken eingegangen. Dabei wird vor allem auch der sogenannte Impedance Mismatch, die Schwierigkeiten bei der Abbildung von Objekten auf Tabellen einer Datenbank, thematisiert.

Kapitel 3 – Persistenz mit JDBC

Wie man mit Java-Bordmitteln auf Datenbanken zugreifen kann, ist Thema von Kapitel 3. Zunächst betrachten wir JDBC als Basistechnologie und erstellen verschiedene Beispielapplikationen bis hin zum Mapping von Objekten in die Datenbank, dem sogenannten ORM (Object-Relational Mapping).

Kapitel 4 – Persistenz mit JPA

Das JPA (Java Persistence API) stellt eine Alternative zu JDBC dar und erleichtert die Realisierung von Persistenzlösungen mit Java, insbesondere das ORM. In Kapitel 4 werden zunächst...

Blick ins Buch
Inhaltsverzeichnis
Inhaltsverzeichnis5
Vorwort9
Motivation9
Wer sollte dieses Buch lesen?10
Was soll mithilfe dieses Buchs gelernt werden?10
Sourcecode und ausführbare Programme11
Aufbau dieses Buchs12
Konventionen13
Danksagung15
Anregungen und Kritik16
1 Einstieg in XML und JSON17
1.1 Basiswissen XML18
1.1.1 Bestandteile und Aufbau eines XML-Dokuments21
1.1.2 Validierung eines XML-Dokuments26
1.2 XML-Verarbeitung mit JAXP30
1.2.1 Einfaches Parsing mit SAX31
1.2.2 Komplexere Parsing-Aufgaben mit SAX34
1.2.3 Parsing mit DOM37
1.2.4 Verarbeiten und Speichern mit DOM41
1.2.5 StAX als Alternative zu SAX oder DOM?45
1.2.6 SAX, StAX oder DOM?52
1.2.7 XPath im Überblick53
1.2.8 XSLT im Überblick58
1.2.9 XMLEncoder und XMLDecoder im Überblick62
1.3 XML-Verarbeitung mit JAXB65
1.3.1 Schritt 1: Passende Java-Klassen erstellen66
1.3.2 Schritt 2: Marshalling und Unmarshalling70
1.3.3 JAXB: Stärken und Schwächen74
1.4 JAXB und StAX in Kombination75
1.4.1 Rekonstruktion von Objekten mit JAXB und StAX75
1.4.2 Vergleich zu SAX, DOM und JAXB78
1.4.3 On-the-Fly-Modifikation von Objekten81
1.5 JSON – das bessere XML?83
1.5.1 Crashkurs JSON83
1.5.2 JSON mit Java verarbeiten84
1.5.3 JSON vs. XML89
1.6 Weiterführende Literatur90
2 Einführung in Persistenz und relationale Datenbanken91
2.1 Grundlagen zur Persistenz92
2.1.1 Beschränkungen einfacher Persistenzlösungen92
2.1.2 Modelle zur Persistierung von Objekten94
2.1.3 Speicherung von Daten in relationalen Datenbanken95
2.2 Abbildung zwischen Objekt- und Datenbankmodell102
2.2.1 Abbildung von Referenzen104
2.2.2 Abbildung von Assoziationen und Aggregationen107
2.2.3 Abbildung von Vererbung110
2.3 Das Datenbanksystem HSQLDB im Kurzüberblick114
2.4 SQL-Grundlagen116
2.4.1 DDL – Definition von Tabellen117
2.4.2 DQL – Datenabfrage123
2.4.3 DML – Datenmanipulation127
2.5 Ausfallsicherheit und Replikation130
2.6 Weiterführende Literatur131
3 Persistenz mit JDBC133
3.1 Datenbankzugriffe per JDBC133
3.1.1 Schritte zur Abfrage von Datenbanken136
3.1.2 Besonderheiten von ResultSet144
3.1.3 Abfrage von Metadaten150
3.1.4 Probleme bei der Ausführung von Statements158
3.1.5 Das Interface PreparedStatement161
3.1.6 Transaktionen in JDBC164
3.2 Grundlagen zum ORM mit JDBC167
3.2.1 Rekonstruktion von Objekten167
3.2.2 Zugriffe mit einem Data Access Object (DAO)172
3.3 Weiterführende Literatur175
4 Persistenz mit JPA177
4.1 Grundlagen zum ORM und zum JPA178
4.2 Einführung in JPA an einem Beispiel180
4.2.1 Definition persistenter Klassen180
4.2.2 Die Konfigurationsdatei persistence.xml183
4.2.3 Datenbankzugriffe per JPA in Java SE184
4.2.4 Lebenszyklus von Entitäten (Entity Lifecycle)189
4.2.5 Datenbankmodell191
4.2.6 Vorteile der konfigurativen Persistenz193
4.3 JPQL im Überblick194
4.3.1 Syntax von JPQL194
4.3.2 Besondere Arten von Queries197
4.3.3 Abfragen mit JPQL ausführen198
4.3.4 Typsichere Abfragen und das Criteria API204
4.4 DAO-Funktionalität mit JPA207
4.4.1 CRUD-Funktionalität207
4.4.2 Einsatz des DAO210
4.5 Fortgeschritteneres ORM mit JPA212
4.5.1 Abbildung von Assoziationen213
4.5.2 Abbildung von Vererbungshierarchien216
4.5.3 Verarbeitung der Typen aus JSR-310: Date and Time220
4.5.4 Bean Validation im Einsatz223
4.6 Transaktionen und Locking227
4.6.1 Isolationslevel und Effekte227
4.6.2 Problemkontext228
4.6.3 Optimistic Locking229
4.7 Caching in JPA232
4.8 Fazit234
4.9 Weiterführende Literatur234
5 NoSQL-Datenbanken am Beispiel von MongoDB235
5.1 Einführung und Überblick235
5.2 Einführung MongoDB241
5.2.1 Analogie von CRUD (RDBMS) zu IFUR (MongoDB)243
5.2.2 Komplexere Abfragen248
5.2.3 MongoDB und Transaktionen251
5.3 Ausfallsicherheit und Skalierbarkeit252
5.3.1 Hintergrundwissen: Formen der Skalierung252
5.3.2 Ausfallsicherheit und Replica Sets254
5.3.3 Skalierung und Sharding255
5.3.4 Anmerkungen zu Replica Sets und Sharding257
5.4 MongoDB aus Java ansprechen257
5.4.1 Einführendes Beispiel258
5.4.2 Daten einfügen und auslesen259
5.4.3 Verarbeitung komplexerer Daten263
5.4.4 Einfaches JSON-basiertes Object/Document Mapping268
5.4.5 Object/Document Mapping mit Spring Data MongoDB271
5.5 Fazit283
5.6 Weiterführende Literatur284
6 REST-Services mit JAX-RS und Jersey285
6.1 REST im Kurzüberblick286
6.1.1 Einführendes Beispiel eines REST-Service288
6.1.2 Zugriffe auf REST-Services292
6.1.3 Unterstützung verschiedener Formate294
6.1.4 Zugriffe auf REST-Services am Beispiel von MongoDB296
6.2 Ein REST-Service mit CRUD-Funktionalität299
6.2.1 MIME-Types und unterschiedliche Datenformate299
6.2.2 HTTP-Kommandos und CRUD-Funktionalität301
6.3 Tipps zum Design von REST-Interfaces306
6.3.1 Varianten der Rückgabe und Error Handling bei REST306
6.3.2 Wertübergabe als @QueryParam oder @PathParam309
6.3.3 Paging bei GET310
6.4 Fortgeschrittene Themen311
6.4.1 Einsatz von Request- und Response-Filtern311
6.4.2 Security im Kontext von REST315
6.4.3 Testen mit restfuse318
6.5 Fazit320
6.6 Weiterführende Literatur321
7 Entwurf einer Beispielapplikation323
7.1 Iteration 0: Ausgangsbasis323
7.2 Iteration 1: Zentrale Verwaltung von Highscores327
7.3 Iteration 2: Verwaltung von XML332
7.4 Iteration 3: Bereitstellen als REST-Service338
7.5 Iteration 4: Web-GUI mit HTML und JavaScript344
7.6 Iteration 5: Protokollierung von Aktionen mit MongoDB352
7.7 Fazit zum Abschluss der Iterationen357
A Einführung Gradle361
A.1 Projektstruktur für Maven und Gradle361
A.2 Builds mit Gradle363
B Client-Server-Kommunikation und HTTP im Überblick371
B.1 Client-Server-Kommunikation371
B.2 Basiswissen HTTP373
C Grundlagenwissen HTML379
C.1 Basiswissen HTML379
C.1.1 HTML am Beispiel380
C.1.2 Interaktivität und Formulare382
D Wissenswertes zu JavaScript387
D.1 Grundlagen zur Sprache387
D.2 Modifikation von HTML389
D.3 JSON-Verarbeitung393
D.4 REST-Services ansprechen394
Literaturverzeichnis395
Index397
www.dpunkt.de0

Weitere E-Books zum Thema: Programmiersprachen - Softwareentwicklung

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

Shortcut-Tipps für ASP.NET-Profis Die neue .NET-Version der Active Server Pages stellt eine Umgebung zur Entwicklung von Web-Applikationen im .NET-Framework bereit. Viele aus der Desktop-…

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

Shortcut-Tipps für ASP.NET-Profis Die neue .NET-Version der Active Server Pages stellt eine Umgebung zur Entwicklung von Web-Applikationen im .NET-Framework bereit. Viele aus der Desktop-…

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

Shortcut-Tipps für ASP.NET-Profis Die neue .NET-Version der Active Server Pages stellt eine Umgebung zur Entwicklung von Web-Applikationen im .NET-Framework bereit. Viele aus der Desktop-…

Programmieren lernen in PHP 5

E-Book Programmieren lernen in PHP 5
Format: PDF

Mit der Version 5 erreicht PHP einen bemerkenswerten Reifegrad, der PHP zu einer festen Größe in der Welt der Webprogrammierung macht. Gerade die leichte Erlernbarkeit macht PHP zur idealen…

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

Die Informatik entwickelt sich in einer unglaublichen Geschwindigkeit. Häufig ist die Mathematik Grundlage von Neuerungen. Deshalb ist sie unverzichtbares Werkzeug jedes Informatikers und Pflichtfach…

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

Die Informatik entwickelt sich in einer unglaublichen Geschwindigkeit. Häufig ist die Mathematik Grundlage von Neuerungen. Deshalb ist sie unverzichtbares Werkzeug jedes Informatikers und Pflichtfach…

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

Die Informatik entwickelt sich in einer unglaublichen Geschwindigkeit. Häufig ist die Mathematik Grundlage von Neuerungen. Deshalb ist sie unverzichtbares Werkzeug jedes Informatikers und Pflichtfach…

Weitere Zeitschriften

Menschen. Inklusiv leben

Menschen. Inklusiv leben

MENSCHEN. das magazin informiert über Themen, die das Zusammenleben von Menschen in der Gesellschaft bestimmen -und dies konsequent aus Perspektive der Betroffenen. Die Menschen, um die es geht, ...

ARCH+.

ARCH+.

ARCH+ ist eine unabhängige, konzeptuelle Zeitschrift für Architektur und Urbanismus. Der Name ist zugleich Programm: mehr als Architektur. Jedes vierteljährlich erscheinende Heft beleuchtet ...

CE-Markt

CE-Markt

CE-Markt ist Pflichtlektüre in der Unterhaltungselektronik-Branche. Die Vermarktung von Home und Mobile Electronics mit den besten Verkaufsargumenten und Verkaufsstrategien gehören ebenso zum ...

ea evangelische aspekte

ea evangelische aspekte

evangelische Beiträge zum Leben in Kirche und Gesellschaft Die Evangelische Akademikerschaft in Deutschland ist Herausgeberin der Zeitschrift evangelische aspekte Sie erscheint viermal im Jahr. In ...