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

Datenaustauschformate, Datenbankentwicklung und verteilte Anwendungen
 
 
dpunkt (Verlag)
  • 1. Auflage
  • |
  • erschienen am 1. Juni 2016
  • |
  • 404 Seiten
 
E-Book | ePUB mit Wasserzeichen-DRM | Systemvoraussetzungen
E-Book | PDF mit Wasserzeichen-DRM | Systemvoraussetzungen
978-3-86491-961-9 (ISBN)
 
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.
  • Deutsch
  • Heidelberg
  • |
  • Deutschland
  • 4,96 MB
978-3-86491-961-9 (9783864919619)
weitere Ausgaben werden ermittelt
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.
1 - Inhaltsverzeichnis [Seite 5]
2 - Vorwort [Seite 9]
2.1 - Motivation [Seite 9]
2.2 - Wer sollte dieses Buch lesen? [Seite 10]
2.3 - Was soll mithilfe dieses Buchs gelernt werden? [Seite 10]
2.4 - Sourcecode und ausführbare Programme [Seite 11]
2.5 - Aufbau dieses Buchs [Seite 12]
2.6 - Konventionen [Seite 13]
2.7 - Danksagung [Seite 15]
2.8 - Anregungen und Kritik [Seite 16]
3 - 1 Einstieg in XML und JSON [Seite 17]
3.1 - 1.1 Basiswissen XML [Seite 18]
3.1.1 - 1.1.1 Bestandteile und Aufbau eines XML-Dokuments [Seite 21]
3.1.2 - 1.1.2 Validierung eines XML-Dokuments [Seite 26]
3.2 - 1.2 XML-Verarbeitung mit JAXP [Seite 30]
3.2.1 - 1.2.1 Einfaches Parsing mit SAX [Seite 31]
3.2.2 - 1.2.2 Komplexere Parsing-Aufgaben mit SAX [Seite 34]
3.2.3 - 1.2.3 Parsing mit DOM [Seite 37]
3.2.4 - 1.2.4 Verarbeiten und Speichern mit DOM [Seite 41]
3.2.5 - 1.2.5 StAX als Alternative zu SAX oder DOM? [Seite 45]
3.2.6 - 1.2.6 SAX, StAX oder DOM? [Seite 52]
3.2.7 - 1.2.7 XPath im Überblick [Seite 53]
3.2.8 - 1.2.8 XSLT im Überblick [Seite 58]
3.2.9 - 1.2.9 XMLEncoder und XMLDecoder im Überblick [Seite 62]
3.3 - 1.3 XML-Verarbeitung mit JAXB [Seite 65]
3.3.1 - 1.3.1 Schritt 1: Passende Java-Klassen erstellen [Seite 66]
3.3.2 - 1.3.2 Schritt 2: Marshalling und Unmarshalling [Seite 70]
3.3.3 - 1.3.3 JAXB: Stärken und Schwächen [Seite 74]
3.4 - 1.4 JAXB und StAX in Kombination [Seite 75]
3.4.1 - 1.4.1 Rekonstruktion von Objekten mit JAXB und StAX [Seite 75]
3.4.2 - 1.4.2 Vergleich zu SAX, DOM und JAXB [Seite 78]
3.4.3 - 1.4.3 On-the-Fly-Modifikation von Objekten [Seite 81]
3.5 - 1.5 JSON - das bessere XML? [Seite 83]
3.5.1 - 1.5.1 Crashkurs JSON [Seite 83]
3.5.2 - 1.5.2 JSON mit Java verarbeiten [Seite 84]
3.5.3 - 1.5.3 JSON vs. XML [Seite 89]
3.6 - 1.6 Weiterführende Literatur [Seite 90]
4 - 2 Einführung in Persistenz und relationale Datenbanken [Seite 91]
4.1 - 2.1 Grundlagen zur Persistenz [Seite 92]
4.1.1 - 2.1.1 Beschränkungen einfacher Persistenzlösungen [Seite 92]
4.1.2 - 2.1.2 Modelle zur Persistierung von Objekten [Seite 94]
4.1.3 - 2.1.3 Speicherung von Daten in relationalen Datenbanken [Seite 95]
4.2 - 2.2 Abbildung zwischen Objekt- und Datenbankmodell [Seite 102]
4.2.1 - 2.2.1 Abbildung von Referenzen [Seite 104]
4.2.2 - 2.2.2 Abbildung von Assoziationen und Aggregationen [Seite 107]
4.2.3 - 2.2.3 Abbildung von Vererbung [Seite 110]
4.3 - 2.3 Das Datenbanksystem HSQLDB im Kurzüberblick [Seite 114]
4.4 - 2.4 SQL-Grundlagen [Seite 116]
4.4.1 - 2.4.1 DDL - Definition von Tabellen [Seite 117]
4.4.2 - 2.4.2 DQL - Datenabfrage [Seite 123]
4.4.3 - 2.4.3 DML - Datenmanipulation [Seite 127]
4.5 - 2.5 Ausfallsicherheit und Replikation [Seite 130]
4.6 - 2.6 Weiterführende Literatur [Seite 131]
5 - 3 Persistenz mit JDBC [Seite 133]
5.1 - 3.1 Datenbankzugriffe per JDBC [Seite 133]
5.1.1 - 3.1.1 Schritte zur Abfrage von Datenbanken [Seite 136]
5.1.2 - 3.1.2 Besonderheiten von ResultSet [Seite 144]
5.1.3 - 3.1.3 Abfrage von Metadaten [Seite 150]
5.1.4 - 3.1.4 Probleme bei der Ausführung von Statements [Seite 158]
5.1.5 - 3.1.5 Das Interface PreparedStatement [Seite 161]
5.1.6 - 3.1.6 Transaktionen in JDBC [Seite 164]
5.2 - 3.2 Grundlagen zum ORM mit JDBC [Seite 167]
5.2.1 - 3.2.1 Rekonstruktion von Objekten [Seite 167]
5.2.2 - 3.2.2 Zugriffe mit einem Data Access Object (DAO) [Seite 172]
5.3 - 3.3 Weiterführende Literatur [Seite 175]
6 - 4 Persistenz mit JPA [Seite 177]
6.1 - 4.1 Grundlagen zum ORM und zum JPA [Seite 178]
6.2 - 4.2 Einführung in JPA an einem Beispiel [Seite 180]
6.2.1 - 4.2.1 Definition persistenter Klassen [Seite 180]
6.2.2 - 4.2.2 Die Konfigurationsdatei persistence.xml [Seite 183]
6.2.3 - 4.2.3 Datenbankzugriffe per JPA in Java SE [Seite 184]
6.2.4 - 4.2.4 Lebenszyklus von Entitäten (Entity Lifecycle) [Seite 189]
6.2.5 - 4.2.5 Datenbankmodell [Seite 191]
6.2.6 - 4.2.6 Vorteile der konfigurativen Persistenz [Seite 193]
6.3 - 4.3 JPQL im Überblick [Seite 194]
6.3.1 - 4.3.1 Syntax von JPQL [Seite 194]
6.3.2 - 4.3.2 Besondere Arten von Queries [Seite 197]
6.3.3 - 4.3.3 Abfragen mit JPQL ausführen [Seite 198]
6.3.4 - 4.3.4 Typsichere Abfragen und das Criteria API [Seite 204]
6.4 - 4.4 DAO-Funktionalität mit JPA [Seite 207]
6.4.1 - 4.4.1 CRUD-Funktionalität [Seite 207]
6.4.2 - 4.4.2 Einsatz des DAO [Seite 210]
6.5 - 4.5 Fortgeschritteneres ORM mit JPA [Seite 212]
6.5.1 - 4.5.1 Abbildung von Assoziationen [Seite 213]
6.5.2 - 4.5.2 Abbildung von Vererbungshierarchien [Seite 216]
6.5.3 - 4.5.3 Verarbeitung der Typen aus JSR-310: Date and Time [Seite 220]
6.5.4 - 4.5.4 Bean Validation im Einsatz [Seite 223]
6.6 - 4.6 Transaktionen und Locking [Seite 227]
6.6.1 - 4.6.1 Isolationslevel und Effekte [Seite 227]
6.6.2 - 4.6.2 Problemkontext [Seite 228]
6.6.3 - 4.6.3 Optimistic Locking [Seite 229]
6.7 - 4.7 Caching in JPA [Seite 232]
6.8 - 4.8 Fazit [Seite 234]
6.9 - 4.9 Weiterführende Literatur [Seite 234]
7 - 5 NoSQL-Datenbanken am Beispiel von MongoDB [Seite 235]
7.1 - 5.1 Einführung und Überblick [Seite 235]
7.2 - 5.2 Einführung MongoDB [Seite 241]
7.2.1 - 5.2.1 Analogie von CRUD (RDBMS) zu IFUR (MongoDB) [Seite 243]
7.2.2 - 5.2.2 Komplexere Abfragen [Seite 248]
7.2.3 - 5.2.3 MongoDB und Transaktionen [Seite 251]
7.3 - 5.3 Ausfallsicherheit und Skalierbarkeit [Seite 252]
7.3.1 - 5.3.1 Hintergrundwissen: Formen der Skalierung [Seite 252]
7.3.2 - 5.3.2 Ausfallsicherheit und Replica Sets [Seite 254]
7.3.3 - 5.3.3 Skalierung und Sharding [Seite 255]
7.3.4 - 5.3.4 Anmerkungen zu Replica Sets und Sharding [Seite 257]
7.4 - 5.4 MongoDB aus Java ansprechen [Seite 257]
7.4.1 - 5.4.1 Einführendes Beispiel [Seite 258]
7.4.2 - 5.4.2 Daten einfügen und auslesen [Seite 259]
7.4.3 - 5.4.3 Verarbeitung komplexerer Daten [Seite 263]
7.4.4 - 5.4.4 Einfaches JSON-basiertes Object/Document Mapping [Seite 268]
7.4.5 - 5.4.5 Object/Document Mapping mit Spring Data MongoDB [Seite 271]
7.5 - 5.5 Fazit [Seite 283]
7.6 - 5.6 Weiterführende Literatur [Seite 284]
8 - 6 REST-Services mit JAX-RS und Jersey [Seite 285]
8.1 - 6.1 REST im Kurzüberblick [Seite 286]
8.1.1 - 6.1.1 Einführendes Beispiel eines REST-Service [Seite 288]
8.1.2 - 6.1.2 Zugriffe auf REST-Services [Seite 292]
8.1.3 - 6.1.3 Unterstützung verschiedener Formate [Seite 294]
8.1.4 - 6.1.4 Zugriffe auf REST-Services am Beispiel von MongoDB [Seite 296]
8.2 - 6.2 Ein REST-Service mit CRUD-Funktionalität [Seite 299]
8.2.1 - 6.2.1 MIME-Types und unterschiedliche Datenformate [Seite 299]
8.2.2 - 6.2.2 HTTP-Kommandos und CRUD-Funktionalität [Seite 301]
8.3 - 6.3 Tipps zum Design von REST-Interfaces [Seite 306]
8.3.1 - 6.3.1 Varianten der Rückgabe und Error Handling bei REST [Seite 306]
8.3.2 - 6.3.2 Wertübergabe als @QueryParam oder @PathParam [Seite 309]
8.3.3 - 6.3.3 Paging bei GET [Seite 310]
8.4 - 6.4 Fortgeschrittene Themen [Seite 311]
8.4.1 - 6.4.1 Einsatz von Request- und Response-Filtern [Seite 311]
8.4.2 - 6.4.2 Security im Kontext von REST [Seite 315]
8.4.3 - 6.4.3 Testen mit restfuse [Seite 318]
8.5 - 6.5 Fazit [Seite 320]
8.6 - 6.6 Weiterführende Literatur [Seite 321]
9 - 7 Entwurf einer Beispielapplikation [Seite 323]
9.1 - 7.1 Iteration 0: Ausgangsbasis [Seite 323]
9.2 - 7.2 Iteration 1: Zentrale Verwaltung von Highscores [Seite 327]
9.3 - 7.3 Iteration 2: Verwaltung von XML [Seite 332]
9.4 - 7.4 Iteration 3: Bereitstellen als REST-Service [Seite 338]
9.5 - 7.5 Iteration 4: Web-GUI mit HTML und JavaScript [Seite 344]
9.6 - 7.6 Iteration 5: Protokollierung von Aktionen mit MongoDB [Seite 352]
9.7 - 7.7 Fazit zum Abschluss der Iterationen [Seite 357]
10 - A Einführung Gradle [Seite 361]
10.1 - A.1 Projektstruktur für Maven und Gradle [Seite 361]
10.2 - A.2 Builds mit Gradle [Seite 363]
11 - B Client-Server-Kommunikation und HTTP im Überblick [Seite 371]
11.1 - B.1 Client-Server-Kommunikation [Seite 371]
11.2 - B.2 Basiswissen HTTP [Seite 373]
12 - C Grundlagenwissen HTML [Seite 379]
12.1 - C.1 Basiswissen HTML [Seite 379]
12.1.1 - C.1.1 HTML am Beispiel [Seite 380]
12.1.2 - C.1.2 Interaktivität und Formulare [Seite 382]
13 - D Wissenswertes zu JavaScript [Seite 387]
13.1 - D.1 Grundlagen zur Sprache [Seite 387]
13.2 - D.2 Modifikation von HTML [Seite 389]
13.3 - D.3 JSON-Verarbeitung [Seite 393]
13.4 - D.4 REST-Services ansprechen [Seite 394]
14 - Literaturverzeichnis [Seite 395]
15 - Index [Seite 397]
16 - www.dpunkt.de [Seite 0]

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...

Dateiformat: ePUB
Kopierschutz: Wasserzeichen-DRM (Digital Rights Management)

Systemvoraussetzungen:

Computer (Windows; MacOS X; Linux): Verwenden Sie eine Lese-Software, die das Dateiformat EPUB verarbeiten kann: z.B. Adobe Digital Editions oder FBReader - beide kostenlos (siehe E-Book Hilfe).

Tablet/Smartphone (Android; iOS): Installieren Sie bereits vor dem Download die kostenlose App Adobe Digital Editions (siehe E-Book Hilfe).

E-Book-Reader: Bookeen, Kobo, Pocketbook, Sony, Tolino u.v.a.m. (nicht Kindle)

Das Dateiformat ePUB ist sehr gut für Romane und Sachbücher geeignet - also für "fließenden" Text ohne komplexes Layout. Bei E-Readern oder Smartphones passt sich der Zeilen- und Seitenumbruch automatisch den kleinen Displays an. Mit Wasserzeichen-DRM wird hier ein "weicher" Kopierschutz verwendet. Daher ist technisch zwar alles möglich - sogar eine unzulässige Weitergabe. Aber an sichtbaren und unsichtbaren Stellen wird der Käufer des E-Books als Wasserzeichen hinterlegt, sodass im Falle eines Missbrauchs die Spur zurückverfolgt werden kann.

Weitere Informationen finden Sie in unserer E-Book Hilfe.


Dateiformat: PDF
Kopierschutz: Wasserzeichen-DRM (Digital Rights Management)

Systemvoraussetzungen:

Computer (Windows; MacOS X; Linux): Verwenden Sie zum Lesen die kostenlose Software Adobe Reader, Adobe Digital Editions oder einen anderen PDF-Viewer Ihrer Wahl (siehe E-Book Hilfe).

Tablet/Smartphone (Android; iOS): Installieren Sie die kostenlose App Adobe Digital Editions oder eine andere Lese-App für E-Books (siehe E-Book Hilfe).

E-Book-Reader: Bookeen, Kobo, Pocketbook, Sony, Tolino u.v.a.m. (nur bedingt: Kindle)

Das Dateiformat PDF zeigt auf jeder Hardware eine Buchseite stets identisch an. Daher ist eine PDF auch für ein komplexes Layout geeignet, wie es bei Lehr- und Fachbüchern verwendet wird (Bilder, Tabellen, Spalten, Fußnoten). Bei kleinen Displays von E-Readern oder Smartphones sind PDF leider eher nervig, weil zu viel Scrollen notwendig ist. Mit Wasserzeichen-DRM wird hier ein "weicher" Kopierschutz verwendet. Daher ist technisch zwar alles möglich - sogar eine unzulässige Weitergabe. Aber an sichtbaren und unsichtbaren Stellen wird der Käufer des E-Books als Wasserzeichen hinterlegt, sodass im Falle eines Missbrauchs die Spur zurückverfolgt werden kann.

Weitere Informationen finden Sie in unserer E-Book Hilfe.


Download (sofort verfügbar)

29,99 €
inkl. 7% MwSt.
Download / Einzel-Lizenz
ePUB mit Wasserzeichen-DRM
siehe Systemvoraussetzungen
PDF mit Wasserzeichen-DRM
siehe Systemvoraussetzungen
Hinweis: Die Auswahl des von Ihnen gewünschten Dateiformats und des Kopierschutzes erfolgt erst im System des E-Book Anbieters
E-Book bestellen