Spring und Hibernate - Eine praxisbezogene Einführung
von: Richard Oates, Thomas Langer, Torsten Lueckow, Gerald Bachlmayr, Stefan Wille
Carl Hanser Fachbuchverlag, 2006
ISBN: 9783446410152
Sprache: Deutsch
300 Seiten, Download: 2467 KB
Format: PDF, auch als Online-Lesen
Inhaltsverzeichnis | 6 | ||
Danksagung | 14 | ||
Unsere Reviewer | 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 | 29 | ||
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 Kon.guration 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 Identfier-Properties | 65 | ||
5.3.1 Manuell vergebene Schlüssel | 65 | ||
5.3.2 Automatisch generierte Schlüssel | 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 Lazy Loading | 89 | ||
5.5 Mapping von Vererbung | 91 | ||
5.5.1 Eine Tabelle für die ganze Klassenhierarchie | 92 | ||
5.5.2 Eine Tabelle pro Klasse | 95 | ||
5.5.3 Eine Tabelle pro konkreter Subklasse | 96 | ||
5.5.4 Polymorphe Beziehungen | 96 | ||
5.6 Mapping mit XML | 97 | ||
5.7 Weitere Mapping-Elemente | 98 | ||
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 | 109 | ||
6.3 Spring-Beans und ihre Definitionen | 110 | ||
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 | 118 | ||
6.3.4 Der Life-Cycle von Spring-Beans | 121 | ||
6.4 Spring Inversion-of-Control-Container | 124 | ||
6.4.1 Die Bean-Factory-Schnittstelle | 124 | ||
6.4.2 Weitergehende Funktionalität mit dem Application-Context | 125 | ||
6.5 Individualisieren des Containers | 126 | ||
6.5.1 Veränderung von Bean-Definitionen | 127 | ||
6.5.2 Nachbearbeitung von Beans | 129 | ||
Kapitel 7 Die Datenzugriffsschicht | 132 | ||
7.1 Vorteile von Spring im Kontext eines O/R-Mappers | 133 | ||
7.2 Hibernate-Konfiguration mit Spring | 134 | ||
7.2.1 Definition der JDBC-DataSource | 134 | ||
7.2.2 Definition der Hibernate-SessionFactory | 135 | ||
7.3 Abfragen mit einem Data-Access-Objekt | 136 | ||
7.3.1 Objekte mit dem Primärschlüssel laden | 137 | ||
7.3.2 Konfiguration der DAO-Klasse als Spring-Bean | 138 | ||
7.3.3 Eine DAO-Finder-Methode | 138 | ||
7.4 Test der DAO-Klassen | 139 | ||
7.4.1 Das Spring-Test-Framework | 140 | ||
7.4.2 Test einer DAO-Abfrage-Methode | 141 | ||
7.4.3 Weitere Methoden in der Spring-Test-Klassenhierarchie | 145 | ||
7.4.4 Initialisierung der Test-Klasse | 145 | ||
7.4.5 Autowire by Name | 146 | ||
7.5 Weitere Features der Hibernate Query Language | 147 | ||
7.5.1 Die select-Klausel | 147 | ||
7.5.2 Funktionen | 148 | ||
7.5.3 Die where-Klausel | 148 | ||
7.5.4 Subquery | 149 | ||
7.6 Zusätzliche Hibernate-Zugriffsmöglichkeiten | 149 | ||
7.6.1 Weitere Methoden in HibernateTemplate | 150 | ||
7.6.2 Die HibernateCallback-Klasse | 152 | ||
7.6.3 Eine Paged-Abfrage | 153 | ||
7.6.4 DAO-Implementierung ohne HibernateDaoSupport | 154 | ||
7.6.5 DAO-Implementierung ohne Spring | 155 | ||
7.7 Die Criteria-API | 156 | ||
7.7.1 Ein Criteria-basiertes Beispiel | 156 | ||
7.7.2 Test einer Criteria-basierten Methode | 157 | ||
7.7.3 Query-by-Example | 157 | ||
7.7.4 Aggregat-Funktionen | 159 | ||
7.8 DAO-Schreibmethoden | 160 | ||
7.8.1 Neue Objekte speichern | 160 | ||
7.8.2 Aktualisieren eines persistenten Objekts | 161 | ||
7.8.3 Aktualisieren eines detachten Objekts | 162 | ||
7.8.4 Das Flush-Problem in Tests | 162 | ||
7.9 Arbeiten mit Stored Procedures | 164 | ||
7.9.1 Aufruf über JDBC | 165 | ||
7.9.2 Aufruf über Spring | 165 | ||
7.9.3 Aufruf über Hibernate | 166 | ||
7.9.4 Empfehlung | 167 | ||
Kapitel 8 Services mit Spring | 168 | ||
8.1 Allgemeine Themen bei der Implementierung der Service-Schicht | 168 | ||
Bereitstellung der Geschäftslogik | 169 | ||
Data-Transfer-Objekte | 170 | ||
Client-Zugriff auf der Service-Schicht | 171 | ||
Enwicklung mit dem Spring-Framework | 171 | ||
8.2 Der Use-Case Pizza-Bestellung | 171 | ||
8.2.1 Implementierung einer Service-Methode | 171 | ||
8.2.2 Test der Service-Methode | 173 | ||
8.3 Aufnehmen einer weiteren Pizza in einer Bestellung | 174 | ||
8.3.1 Testen mit Mock-Objekten | 175 | ||
8.4 Spring AOP - einfach und mächtig | 178 | ||
8.4.1 Konzept des Aspect-Oriented Programming | 178 | ||
8.4.2 Spring-AOP: Annotations und XML | 180 | ||
8.4.3 Pointcuts in Spring | 181 | ||
8.4.4 Advices in Spring | 182 | ||
8.4.5 Binärcode erzeugen – JDK versus CGLIB | 186 | ||
8.4.6 Testen des Aspekts | 187 | ||
8.4.7 Das Spring-Aspekt-Toolset | 188 | ||
8.4.8 AOP mit Spring 1.2 | 190 | ||
8.5 Transaktionen in Spring | 193 | ||
8.5.1 Grundlagen und das ACID-Prinzip | 194 | ||
8.5.2 Der Transaktionsmanager | 195 | ||
8.5.3 Beein.ussung des Transaktionsverhaltens | 197 | ||
8.5.4 Transaktionsverläufe | 198 | ||
8.5.5 Deklarative Transaktionsdurchführung | 201 | ||
8.5.6 Programmatische Transaktionsdurchführung | 207 | ||
8.5.7 Durchführung von Transaktionstests | 210 | ||
8.5.8 Transaktionen mit Spring 1.2 | 211 | ||
Kapitel 9 Webanwendungen mit Spring und Hibernate | 214 | ||
9.1 Die Beispielanwendung | 214 | ||
9.2 Spring und Webanwendungen | 217 | ||
9.2.1 Laden des Application-Contexts | 217 | ||
9.2.2 Integration mit JavaServer Faces | 219 | ||
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 | 236 | ||
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 | 248 | ||
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 | ||
Kapitel 10 Integration in die JEE-Welt | 260 | ||
10.1 Eine RMI-Anbindung | 262 | ||
10.1.1 Exportieren der Service-Schnittstelle | 262 | ||
10.1.2 Konfiguration der Client-Anbindung | 264 | ||
10.1.3 Implementierung der Client-Klasse | 265 | ||
10.2 Die EJB-Schicht der Opiz-Anwendung | 266 | ||
10.3 Implementierung einer Stateless-Session-Bean | 267 | ||
10.3.1 Die Remote- und Home-Schnittstellen | 267 | ||
10.3.2 Die Implementierung der Session-Bean | 268 | ||
10.3.3 Die BeanFactory .nden | 269 | ||
10.3.4 Deployment | 271 | ||
10.4 Stateful-Session-Beans | 272 | ||
10.4.1 Remote- und Home-Schnittstellen | 272 | ||
10.4.2 Die Implementierung der Stateful-Session-Bean | 273 | ||
10.4.3 Deployment | 274 | ||
10.5 Message-Driven-Beans | 274 | ||
10.6 Client-Anbindung an den EJB-Container | 274 | ||
10.6.1 Zugriff auf eine Stateless-Session-Bean | 275 | ||
10.6.2 Zugriff auf eine Stateful-Session-Bean | 278 | ||
10.7 Test-Möglichkeiten | 280 | ||
10.8 Spring Unterstützung für JMX | 284 | ||
10.8.1 Registrierung der Spring-Beans beim JMX-Server | 284 | ||
10.8.2 Konfiguration mit einem Interface | 285 | ||
10.8.3 Konfiguration mit Annotations | 286 | ||
10.8.4 JMX ohne einen Applikations-Server? | 288 | ||
10.9 Spring-Integration von JCA | 289 | ||
10.9.1 Konfiguration des Resource-Adapters | 290 | ||
10.9.2 Nutzung des Resource-Adapters | 292 | ||
Stichwortverzeichnis | 296 | ||
Mehr eBooks bei www.ciando.com | 0 |