Suchen und Finden
Service
Infos und Kontakt
Inhaltsverzeichnis
6
Vorwort
14
Kapitel 1 Einleitung
16
1.1 Für wen ist dieses Buch?
16
1.2 Organisation des Buches
17
1.3 Web-Site zum Buch
18
Kapitel 2 Überblick und Installation
20
2.1 Management Summary
20
2.1.1 Was ist Spring?
20
2.1.2 Was ist Hibernate?
21
2.1.3 Kombination von Spring und Hibernate
21
2.2 Installation
22
2.2.1 Download von Spring
23
2.2.2 Download von Hibernate
24
2.2.3 Ein IDE-Projekt mit Hibernate einrichten
25
2.2.4 Ein Spring-Projekt
26
Kapitel 3 Software-Architektur der Beispielanwendung
28
3.1 Opiz – Online-Pizza-Dienst
28
3.1.1 Fachliche Use-Cases
28
3.1.2 Domain-Modell
30
3.1.3 Organisation in Eclipse
32
3.2 Architektur-Überblick
32
3.2.1 High-Level-Architektur
32
3.2.2 Data-Access-Objekt-Schicht
34
3.2.3 Service-Schicht
35
3.2.4 Präsentationsschicht bei Web-Anwendungen
36
Kapitel 4 Einführung in Hibernate
38
4.1 Hibernate als O/R-Mapper
38
4.2 Überblick über die Hibernate-Architektur
40
4.2.1 Persistente Klassen
40
4.2.2 Die Hibernate-Session
41
4.2.3 Hibernate-Session-Factory
41
4.2.4 Hibernate-Mapping
42
4.3 Hibernate in der Praxis
43
4.3.1 Mapping mit Annotations
44
4.3.2 Konfiguration der Session-Factory
46
4.3.3 Verzeichnisstruktur
48
4.3.4 Initialisierung der Session-Factory
48
4.3.5 Speichern eines Objekts
49
4.3.6 Laden eines Objekts
52
4.3.7 Suchen eines Objekts
53
4.3.8 Verändern eines Objekts
55
4.3.9 L öschen eines Objekts
56
4.3.10 Exception-Handling
56
4.3.11 Logging
56
4.4 Persistency-Lifecycle
58
Kapitel 5 O/R-Mapping mit Hibernate
60
5.1 Mapping von persistenten Klassen
61
5.2 Mapping von einfachen Properties
61
5.2.1 Persistente Properties
61
5.2.2 Spalteneigenschaften festlegen
62
5.2.3 Enumerations
63
5.2.4 Zeitbasierte Properties
64
5.2.5 Blobs und Clobs
64
5.3 Mapping von Identifier-Properties
65
5.3.1 Manuell vergebene Schlüssel
65
5.3.2 Automatisch generierte Schl ¨ussel
66
5.3.3 Natürliche Schlüssel
68
5.4 Mapping von Beziehungen
69
5.4.1 1:N-Beziehungen
69
5.4.2 Bags, Lists, Arrays, Sets, Collections und Maps
77
5.4.3 Equals und HashCode implementieren
79
5.4.4 M:N-Beziehungen
81
5.4.5 1:1-Beziehungen
84
5.4.6 Unidirektionale Beziehungen rückwärts navigieren
89
5.4.7 Lazy Loading
90
5.5 Mapping von Vererbung
92
5.5.1 Eine Tabelle für die ganze Klassenhierarchie
93
5.5.2 Eine Tabelle pro Klasse
96
5.5.3 Eine Tabelle pro konkreter Subklasse
97
5.5.4 Polymorphe Beziehungen
97
5.6 Mapping mit XML
98
5.7 Weitere Mapping-Elemente
99
Kapitel 6 Einführung in Spring
100
6.1 Grundlagen
100
6.1.1 Lightweight-Container
100
6.1.2 Inversion of Control
101
6.1.3 Dependency-Injection
102
6.2 Überblick und Einstieg in Spring
104
6.2.1 Übersicht über die Spring-Module
104
6.2.2 Erstellung eines Spring-Projekts
107
6.2.3 Konfiguration des Application-Contexts
110
6.3 Spring-Beans und ihre Definitionen
111
6.3.1 Erzeugung einer Spring-Bean
111
6.3.2 Properties und Abhängigkeiten von Spring-Beans
113
6.3.3 Collections und andere Util-Klassen
119
6.3.4 Der Life-Cycle von Spring-Beans
122
6.4 Spring Inversion-of-Control-Container
124
6.4.1 Die Bean-Factory-Schnittstelle
124
6.4.2 Weitergehende Funktionalität mit demApplication-Context
125
6.5 Individualisieren des Containers
127
6.5.1 Veränderung von Bean-Definitionen
127
6.5.2 Nachbearbeitung von Beans
129
6.5.3 Definition individueller Property-Editors
131
Kapitel 7 Die Datenzugriffsschicht
134
7.1 Vorteile von Spring im Kontext einesO/R-Mappers
135
7.2 Hibernate-Konfiguration mit Spring
136
7.2.1 Definition der JDBC-DataSource
136
7.2.2 Definition der Hibernate-SessionFactory
137
7.3 Abfragen mit einem Data-Access-Objekt
139
7.3.1 Objekte mit dem Primärschlüssel laden
139
7.3.2 Konfiguration der DAO-Klasse als Spring-Bean
140
7.3.3 Eine DAO-Finder-Methode
140
7.4 Test der DAO-Klassen
142
7.4.1 Das Spring-Test-Framework
142
7.4.2 Test einer DAO-Abfrage-Methode
144
7.4.3 Weitere Methoden in der Spring-Test-Klassenhierarchie
147
7.4.4 Initialisierung der Test-Klasse
148
7.4.5 Autowire by Name
148
7.5 Weitere Features der Hibernate Query Language
149
7.5.1 Die select-Klausel
149
7.5.2 Funktionen
150
7.5.3 Die from-Klausel
151
7.5.4 Die where-Klausel
152
7.5.5 Subquery
152
7.5.6 Gruppierung
153
7.6 Zusätzliche Hibernate-Zugriffsmöglichkeiten
153
7.6.1 Weitere Methoden in HibernateTemplate
153
7.6.2 Die HibernateCallback-Klasse
156
7.6.3 Eine Paged-Abfrage
156
7.6.4 DAO-Implementierung ohne HibernateDaoSupport
158
7.6.5 DAO-Implementierung ohne Spring
158
7.7 Die Criteria-API
160
7.7.1 Ein Criteria-basiertes Beispiel
160
7.7.2 Test einer Criteria-basierten Methode
161
7.7.3 Query-by-Example
161
7.7.4 Aggregat-Funktionen
163
7.8 DAO-Schreibmethoden
164
7.8.1 Neue Objekte speichern
164
7.8.2 Aktualisieren eines persistenten Objekts
165
7.8.3 Aktualisieren eines detachten Objekts
165
7.8.4 Das Flush-Problem in Tests
166
7.9 Arbeiten mit Stored Procedures
168
7.9.1 Aufruf über JDBC
168
7.9.2 Aufruf über Spring
169
7.9.3 Aufruf über Hibernate
170
7.9.4 Empfehlung
171
Kapitel 8 Services mit Spring
172
8.1 Allgemeine Themen bei der Implementierungder Service-Schicht
172
8.2 Der Use-Case ”Pizza-Bestellung&ldquo
175
8.2.1 Implementierung einer Service-Methode
175
8.2.2 Test der Service-Methode
177
8.3 Aufnehmen einer weiterenin einer Bestellung
178
8.3.1 Testen mit Mock-Objekten
179
8.4 Spring AOP – einfach und mächtig
182
8.4.1 Konzept des Aspect-Oriented Programming
182
8.4.2 Spring-AOP: Annotations und XML
184
8.4.3 Pointcuts in Spring
185
8.4.4 Advices in Spring
186
8.4.5 Bin¨arcode erzeugen – JDK versus CGLIB
190
8.4.6 Testen des Aspekts
190
8.4.7 Das Spring-Aspekt-Toolset
192
8.5 Transaktionen in Spring
194
8.5.1 Grundlagen und das ACID-Prinzip
195
8.5.2 Der Transaktionsmanager
196
8.5.3 Beeinflussung des Transaktionsverhaltens
198
8.5.4 Transaktionsverläufe
200
8.5.5 Deklarative Transaktionsdurchführung
202
8.5.6 Programmatische Transaktionsdurchführung
208
8.5.7 Durchführung von Transaktionstests
210
Kapitel 9 Webanwendungen mit Spring und Hibernate
214
9.1 Die Beispielanwendungen
214
9.2 Spring und Webanwendungen
217
9.2.1 Laden des Application-Contexts
218
9.2.2 Integration mit JavaServer Faces
220
9.2.3 Gültigkeitsbereich von Spring-Beans
222
9.3 Hibernate und Webanwendungen
224
9.3.1 OpenSessionInViewFilter
224
9.3.2 Detached Objekte
227
9.3.3 NonUniqueObjectException
232
9.3.4 Behandlung von Exceptions
234
9.3.5 Konkurrierender Zugriff
235
9.3.6 Nebenläufigkeit
237
9.3.7 Connection-Pooling
239
9.3.8 Caching
241
9.4 Zugriffsschutz mit Acegi
246
9.4.1 Authentifizierung
247
9.4.2 Autorisierung
252
9.4.3 Filter in Reihenschaltung
254
9.4.4 Acegi-Tags
257
9.4.5 Acegi und JSF
257
9.5 Alles im Fluss mit Spring Web Flow
259
9.5.1 Endlich automatisch
261
9.5.2 Spring Web Flow mit JavaServer Faces
263
9.5.3 Flow-Persistence-Context
266
9.6 Testmöglichkeiten
272
9.6.1 Test von JSF-Komponenten und Spring
272
9.6.2 Testbeispiel Bestellvorgang
275
Kapitel 10 Integration in die JEE-Welt
280
10.1 Eine RMI-Anbindung
282
10.1.1 Exportieren der Service-Schnittstelle
283
10.1.2 Konfiguration der Client-Anbindung
284
10.1.3 Implementierung der Client-Klasse
285
10.2 Die EJB-Schicht der Opiz-Anwendung
286
10.3 Implementierung einer Stateless-Session-Bean
287
10.3.1 Die Remote- und Home-Schnittstellen
287
10.3.2 Die Implementierung der Session-Bean
288
10.3.3 Die BeanFactory finden
289
10.3.4 Deployment
291
10.4 Stateful-Session-Beans
292
10.4.1 Remote- und Home-Schnittstellen
292
10.4.2 Die Implementierung der Stateful-Session-Bean
293
10.4.3 Deployment
294
10.5 Message-Driven-Beans
294
10.6 Client-Anbindung an den EJB-Container
294
10.6.1 Zugriff auf eine Stateless-Session-Bean
295
10.6.2 Zugriff auf eine Stateful-Session-Bean
297
10.7 Testmöglichkeiten
299
10.8 Springs Unterstützung für JMX
301
10.8.1 Registrierung der Spring-Beans beim JMX-Server
302
10.8.2 Konfiguration mit einem Interface
303
10.8.3 Konfiguration mit Annotations
304
10.8.4 JMX ohne einen Applikations-Server?
306
10.9 Spring-Integration von JCA
308
10.9.1 Konfiguration des Resource-Adapters
309
10.9.2 Nutzung des Resource-Adapters
310
Stichwortverzeichnis
314
Alle Preise verstehen sich inklusive der gesetzlichen MwSt.; Ersparnis im Vergleich zur Printversion





















