Suchen und Finden
Service
Infos und Kontakt
Java-Persistence-API mit Hibernate - Standardisierte Persistenz
1
Inhaltsübersicht
6
Inhaltsverzeichnis
8
Vorwort
8
1 Einführung
8
2 Grundlegendes Mapping von Objekten
8
3 Objektlebenszyklus
9
4 Objekte und Beziehungen
9
5 Vererbung
10
6 Transaktionen
10
7 Datenbankabfragen
11
8 JPA-Konfiguration
11
9 Interessantes rund um Hibernate
13
10 JBoss-Seam
13
A Verwendete Software und Beispielprogramme
13
B URL-Verzeichnis
15
Literaturverzeichnis
15
Stichwortverzeichnis
15
Vorwort
16
1 Einführung
18
1.1 Über dieses Buch
18
1.1.1 Spezifikationen und Standards
18
1.1.2 Das Buch im Netz
19
1.1.3 Zur Sprache
20
1.1.4 Der Leser
20
1.1.5 Vollständigkeit
21
1.1.6 Beispielprogramme
21
1.1.7 Open-Source
23
1.2 Motivation
24
1.2.1 Standards
24
1.2.2 Zwei Welten
24
1.2.3 Entwicklerproduktivität
25
1.3 Ein wenig Historie
25
1.4 Anforderungen an das OR-Mapping
27
1.5 Das Beispiel für Ungeduldige
27
1.5.1 Beispiel mit Hibernates XML-Mapping
28
1.5.2 Beispiel mit Annotationen
32
1.5.3 Beispiel mit JPA
34
1.5.4 Beispiel mit JPAs XML-Mapping
35
1.5.5 Warum Annotationen?
36
1.6 Java-Annotationen
37
1.6.1 Grundlagen
37
1.6.2 Definition eigener Annotationen
40
2 Grundlegendes Mapping von Objekten
42
2.1 Primärschlüssel versus Objektidentität
42
2.1.1 Sequence-Generatoren
45
2.1.2 Table-Generatoren
47
2.1.3 Hibernate-Generatoren
50
2.2 POJO-Mapping
51
2.2.1 Mapping-Optionen auf Entity-Ebene
52
2.2.2 Mapping-Optionen auf Property-Ebene
54
2.2.3 Die
57
Annotation
57
2.3 Wertetypen
59
2.4 Binäre Daten
63
2.5 Legacy-Systeme
65
2.5.1 Natürliche Schlüssel
66
2.5.2 Zusammengesetzte Schlüssel
67
2.5.3 Mehrere Tabellen für ein Entity
74
3 Objektlebenszyklus
80
3.1 JPA in Java-SE-Anwendungen
80
3.1.1 Speichern von Objekten
81
3.1.2 Einfaches Laden von Objekten
88
3.1.3 Löschen von Objekten
90
3.2 JPA in Java-EE-Anwendungen
90
3.2.1 Konfiguration des Eclipse-Projekts
91
3.2.2 Implementierung der EJB-Komponenten
93
3.3 Entity-Listener und Callback-Methoden
96
4 Objekte und Beziehungen
102
4.1 Einfache Beziehungen
103
4.1.1 Unidirektionale 1:n-Beziehungen
103
4.1.2 Bidirektionale 1:n-Beziehungen
106
4.1.3 1:1-Beziehungen
111
4.1.4 Rekursive Beziehungen
116
4.2 Komplexere Beziehungen
119
4.2.1 Unidirektionale n:m-Beziehungen
119
4.2.2 Bidirektionale n:m-Beziehungen
121
4.2.3 Assoziationsklassen
122
4.3 Datentypen für Collections
127
4.3.1 Beziehungen als Listen
127
4.3.2 Beziehungen als Maps
129
4.4 Andere Arten von Beziehungen
131
4.4.1 Collection von Werten
131
4.4.2 Collection von eingebetteten Werten
134
5 Vererbung
140
5.1 Eine Tabelle für eine Vererbungshierarchie
141
5.2 Eine Tabelle je Unterklasse
144
5.3 Eine Tabelle je konkreter Klasse
146
5.4 Mapping von Oberklassen
148
5.5 Bewertung
150
5.6 Kombination von Vererbungsstrategien
150
5.7 Vererbung und Datenbankabfragen
152
6 Transaktionen
154
6.1 Probleme des Mehrbenutzerbetriebs
154
6.2 Isolation-Level
156
6.3 Transaktionen in der JPA
158
6.3.1 Konkurrierende Zugriffe
159
6.3.2 Optimistisches Locking
161
6.3.3 Weitere Lock-Modi
163
6.4 Der Persistenzkontext
165
6.5 Konversationen
168
6.5.1 Grundlagen
168
6.5.2 Konversationen mit JPA und EJBs
171
6.6 Caching
176
7 Datenbankabfragen
182
7.1 JPA-Query-Interface
183
7.1.1 Named Queries
185
7.1.2 Parameter für Abfragen
187
7.1.3 Direkte SQL-Abfragen
187
7.2 Java Persistence Query Language (JPA-QL)
190
7.3 Die From-Klausel
191
7.3.1 Implizite Joins
191
7.3.2 Inner-Joins
192
7.3.3 Left-Joins
193
7.3.4 Fetch-Joins
194
7.3.5 Joins ohne definierte Mapping-Beziehungen
196
7.4 Selektionen mit Where
196
7.4.1 Unterabfragen (Subselects)
197
7.4.2 Funktionen
199
7.5 Projektionen mit Select
200
7.5.1 Aggregationsfunktionen
201
7.5.2 Gruppieren von Daten mit Group By und Having
202
7.5.3 Ergebnisse sortieren mit Order By
204
7.5.4 Konstruktoren im Select-Statement
204
7.6 Update- und Delete-Statements
205
7.7 Hibernate-Abfragen mit Criteria und Example
206
7.7.1 Query by Criteria
206
7.7.2 Query by Example
214
8 JPA-Konfiguration
218
8.1 Persistenzeinheiten
218
8.2 Mapping-Dateien und Annotationen
221
8.2.1 Das Element <entity-mappings>
222
8.2.2 Das Element <persistence-unit-metadata>
223
8.2.3 Das Element <access>
224
8.2.4 Das Element <sequence-generator>
224
8.2.5 Das Element <table-generator>
225
8.2.6 Das Element <named-query>
226
8.2.7 Das Element <named-native-query>
226
8.2.8 Das Element <sql-result-set-mapping>
226
8.2.9 Das Element <entity>
227
8.2.10 Das Element <table>
229
8.2.11 Das Element <unique-constraint>
230
8.2.12 Das Element <secondary-table>
230
8.2.13 Das Element <primary-key-join-column>
231
8.2.14 Das Element <discriminator-column>
232
8.2.15 Das Element <attribute-override>
232
8.2.16 Das Element <association-override>
233
8.2.17 Das Element <attributes>
233
8.2.18 Das Element <column>
234
8.2.19 Das Element <id>
235
8.2.20 Das Element <embedded-id>
235
8.2.21 Das Element <basic>
236
8.2.22 Das Element <version>
237
8.2.23 Das Element <join-column>
237
8.2.24 Das Element <cascade>
238
8.2.25 Das Element <one-to-one>
238
8.2.26 Die Elemente <many-to-one> und <one-to-many>
239
8.2.27 Das Element <many-to-many>
241
8.2.28 Das Element <order-by>
241
8.2.29 Das Element <map-key>
242
8.2.30 Das Element <embedded>
242
8.2.31 Das Element <join-table>
243
8.2.32 Das Element <mapped-superclass>
243
8.2.33 Das Element <embeddable>
244
8.2.34 Das Element <entity-listener>
244
8.2.35 Das Element <id-class>
245
8.2.36 Das Element <inheritance>
245
8.3 XML überschreibt die Annotationen
246
9 Interessantes rund um Hibernate
250
9.1 Hibernate-Validator
250
9.1.1 Built-In-Bedingungen
251
9.1.2 Implementierung eigener Bedingungen
254
9.1.3 Verwendung von Validatoren
258
9.2 Hibernate-Search
260
9.2.1 Lucene
260
9.2.2 Konfiguration in Hibernate
261
9.2.3 Hibernate-Bridges
266
9.2.4 Abfragen mit der Lucene-Syntax
270
9.3 Dynamische Business-Modelle
271
9.3.1 Abbildung in Maps
271
9.3.2 Abbildung in XML
275
9.4 Hibernate-Tools und die JBoss-IDE
278
9.4.1 Eclipse-Plug-ins
279
9.4.2 Ant-Tasks
284
10 JBoss-Seam
294
10.1 Zustandsbehaftete Komponenten und Injektionen
295
10.2 Oberflächen mit JSF und Facelets
296
10.3 Authentifizierung und Autorisierung
300
10.4 Konversationen
303
10.5 Natives Hibernate und Query by Criteria
309
10.6 PDF-Erzeugung und Mail
314
A Verwendete Software und Beispielprogramme
324
A.1 Verwendete Software
324
A.1.1 Hibernate
324
A.1.2 HSQLDB
325
A.1.3 JBoss-Application-Server
325
A.1.4 Alternative Datenbanken
326
A.1.5 JBoss-IDE
329
A.1.6 Ant
329
A.2 Beispielprogramme
329
A.2.1 Bibliotheken
333
A.2.2 Projekte einfuehrung-hibernate, einfuehrung-entity, einfuehrung-jpa und einfuehrung-jpa-xml
334
A.2.3 Projekte pojo-sequence-generator und pojo-table-generator
334
A.2.4 Projekt pojo-basics
335
A.2.5 Projekt pojo-natuerlicher-schluessel
335
A.2.6 Projekte pojo-id-class, pojo-embeddedid, pojo-embeddable
335
A.2.7 Projekt pojo-secondary-table
335
A.2.8 Projekte objektlebenszyklus, objektlebenszyklus-listener und objektlebenszyklus-javaee
335
A.2.9 Projekt beziehungen-1-zu-n
336
A.2.10 Projekte beziehungen-1-zu-1,beziehungen-1-zu-1-hibernate, beziehungen-1-zu-1-table, beziehungen-1-zu-1-onetomany
336
A.2.11 Projekte beziehungen-n-zu-m-uni, beziehungen-n-zu-m-bi, beziehungen-assoziationsklasse
336
A.2.12 Projekte beziehungen-liste und beziehungen-map
336
A.2.13 Projekte beziehungen-werte-collection und beziehungen-embedded-collection
337
A.2.14 Projekt vererbung-single-table
337
A.2.15 Projekt vererbung-joined
337
A.2.16 Projekt vererbung-table-per-class
337
A.2.17 Projekt vererbung-mapped-superclass
337
A.2.18 Projekt vererbung-mix
337
A.2.19 Projekte transaktionen-konkurrenz und transaktionen-konkurrenz-mit-locking
337
A.2.20 Projekte transaktionen-kontext-javase und transaktionen-kontext-javaee
338
A.2.21 Projekte transaktionen-ejb-atomar und transaktionen-ejb-konversation
338
A.2.22 Projekt n-plus-eins-selects
340
A.2.23 Projekte datenbankabfragen, datenbankabfragen-batch und datenbankabfragen-qbc-qbe
340
A.2.24 Projekt konfiguration-xml-vs-annotationen
341
A.2.25 Projekt interessantes-validator
341
A.2.26 Projekt interessantes-lucene
342
A.2.27 Projekt interessantes-dynamic-maps und interessantes-dom4j
342
A.2.28 Projekt interessantes-hibernate-tools
342
A.2.29 Projekt seam-banking
342
URL-Verzeichnis
344
B.1 Spezifikationen
344
B.2 Systeme
344
B. 3 Informationen
345
Literaturverzeichnis
346
Stichwortverzeichnis
348
A
349
B
349
C
349
D
350
E
350
F
350
G
350
H
351
I
351
J
351
K
352
L
352
M
352
N
352
O
352
P
352
Q
353
R
353
S
353
T
354
U
354
V
354
W
354
X
354
Alle Preise verstehen sich inklusive der gesetzlichen MwSt.; Ersparnis im Vergleich zur Printversion





















