Sie sind hier
E-Book

Spring & Hibernate

Eine praxisbezogene Einführung

AutorGerald Bachlmayr, Richard Oates, Stefan Wille, Thomas Langer, Torsten Lueckow
VerlagCarl Hanser Fachbuchverlag
Erscheinungsjahr2008
Seitenanzahl320 Seiten
ISBN9783446416307
FormatPDF
KopierschutzWasserzeichen
GerätePC/MAC/eReader/Tablet
Preis27,99 EUR

Der leichtgewichtige Ansatz von Spring und das mächtige O/RMapping-Tool Hibernate haben in den letzten Jahren eine Revolution in der Entwicklung von JEE-Enterprise-Applikationen ausgelöst. Die beiden Frameworks erfreuen sich ständig wachsender Beliebtheit und werden in der Regel gemeinsam eingesetzt.

Dieses Buch eignet sich für alle Entwickler, die einen schnellen und praxisbezogenen Einstieg in Spring und Hibernate suchen. Wenn sie vor einem Java-Projekt stehen, in dem sie eines der Frameworks oder beide zusammen einsetzen wollen, dann ist dieses Buch genau die richtige Empfehlung.

Hier lernen Entwickler die Grundkonzepte und Einsatzmöglichkeiten dieser zwei De-facto-Standards kennen. Im Mittelpunkt steht die Verwendung der zwei Frameworks in JEE-Applikationen. Zahlreiche Code-Beispiele und Tipps aus der praktischen Erfahrung der Autoren erleichtern die Umsetzung.

Die zweite Auflage wurde durchgehend aktualisiert, mit zusätzlichen Beispielen zu Datenbankabfragen versehen und um Themen wie Injection für Domain-Objekte, Spring Webflow und Flow Managed Persistence Context erweitert.

Kaufen Sie hier:

Horizontale Tabs

Leseprobe

Kapitel 2 überblick und Installation (S. 5-6)

Dieses Kapitel liefert Ihnen einen kurzen Überblick über die in diesem Buch behandelten Frameworks Spring und Hibernate. Im Anschluss folgen Hinweise zur Aufteilung, Versionen und Installation der beiden Frameworks. Das Kapitel schafft somit die Grundlage f ür die folgenden Kapitel, in denen wir Spring und Hibernate anhand einer Beispielanwendung praktisch kennenlernen.

2.1 Management Summary

Eigentlich hat jeder Entwickler die Begriffe Hibernate und Spring bereits geh ört. Trotzdem ist es sicherlich sinnvoll, mit einem kurzen überblick über die Aufgaben und Funktionalität dieser beiden Frameworks zu beginnen. Nach dieser kurzen Zusammenfassung wollen wir der Kombination von Hibernate und Spring ein paar S ätze widmen.

2.1.1 Was ist Spring?

Das Spring-Framework ist eins der wenigen erfolgreichen Softwareprojekte, die grundlegend aus den Ideen eines Buchs entstanden sind. In dem Buch " Expert One-on-One: J2EE Design and Development" legte Rod Johnson den Grundstein f ür den Beginn der Spring-Entwicklung. Dieses mit den Ideen aus der Praxis designte Framework wurde im Laufe der Zeit als Open-Source-Projekt bereitgestellt und durch eine große Anzahl von Entwicklern stetig weiterentwickelt. Da es aus einem JEE-Buch entstanden ist und somit viele JEE-Themen adressiert, ist es nicht verwunderlich, dass das Spring-Framework oftmals f ür serverbasierte Enterprise- Anwendungen eingesetzt wird.

Die große Komplexität und die unterschiedlichen Konzepte der verschiedenen JEE- und Open-Source-APIs f ühren oftmals zu fehleranfälligen Abläufen und langen Projektlaufzeiten. Durch die Integration in einen Applikations-Server und das damit verbundene Deployment verkompliziert sich das ganze zusätzlich. Spring stellt ein klar strukturiertes Programmier-Modell zur Verf ügung und vereinfacht somit die Benutzung der verschiedenen APIs. Die dabei entwickelte Business- Logik ist, im Gegensatz zu Enterprise-Java-Beans (EJB), weitgehend unabhängig vom Framework.

Spring ist von der Idee her zunächst v öllig unabhängig von JEE, l ässt sich aber sehr gut in verschiedene JEE-Technologien integrieren bzw. bietet f ür verschiedene JEE-Technologien eine ausgereifte Unterst ützung an. In den Bereichen, wo wir Spring f ür den Zugriff auf JEE-APIs benutzen, erhalten wir die M öglichkeit, unsere Anwendung einfach und ohne einen JEE-Container automatisiert zu testen. Der modulare Aufbau von Spring erm öglicht es, einzelne Teile in verschiedenen Software-Projekten individuell zu verwenden bzw. inkrementell in bestehende Projekte zu integrieren.

2.1.2 Was ist Hibernate?

Bei der Betrachtung der Softwarearchitektur verschiedener Anwendungen wird deutlich, dass fast jede Anwendung eine relationale Datenbank f ür die Persistierung der verarbeiteten Daten einsetzt. Innerhalb der JVM liegen diese Daten nat ürlich als Objekte vor, die einen de.nierten Zustand besitzen. Mithilfe eines geeigneten Persistenz-Frameworks ist es m öglich, den Zustand eines Objekts in einer relationalen Datenbank zu speichern und aus entsprechenden Datensätzen wiederum Objekte zu erzeugen.

Inhaltsverzeichnis
Inhaltsverzeichnis6
Vorwort14
Kapitel 1 Einleitung16
1.1 Für wen ist dieses Buch?16
1.2 Organisation des Buches17
1.3 Web-Site zum Buch18
Kapitel 2 Überblick und Installation20
2.1 Management Summary20
2.1.1 Was ist Spring?20
2.1.2 Was ist Hibernate?21
2.1.3 Kombination von Spring und Hibernate21
2.2 Installation22
2.2.1 Download von Spring23
2.2.2 Download von Hibernate24
2.2.3 Ein IDE-Projekt mit Hibernate einrichten25
2.2.4 Ein Spring-Projekt26
Kapitel 3 Software-Architektur der Beispielanwendung28
3.1 Opiz – Online-Pizza-Dienst28
3.1.1 Fachliche Use-Cases28
3.1.2 Domain-Modell30
3.1.3 Organisation in Eclipse32
3.2 Architektur-Überblick32
3.2.1 High-Level-Architektur32
3.2.2 Data-Access-Objekt-Schicht34
3.2.3 Service-Schicht35
3.2.4 Präsentationsschicht bei Web-Anwendungen36
Kapitel 4 Einführung in Hibernate38
4.1 Hibernate als O/R-Mapper38
4.2 Überblick über die Hibernate-Architektur40
4.2.1 Persistente Klassen40
4.2.2 Die Hibernate-Session41
4.2.3 Hibernate-Session-Factory41
4.2.4 Hibernate-Mapping42
4.3 Hibernate in der Praxis43
4.3.1 Mapping mit Annotations44
4.3.2 Konfiguration der Session-Factory46
4.3.3 Verzeichnisstruktur48
4.3.4 Initialisierung der Session-Factory48
4.3.5 Speichern eines Objekts49
4.3.6 Laden eines Objekts52
4.3.7 Suchen eines Objekts53
4.3.8 Verändern eines Objekts55
4.3.9 L öschen eines Objekts56
4.3.10 Exception-Handling56
4.3.11 Logging56
4.4 Persistency-Lifecycle58
Kapitel 5 O/R-Mapping mit Hibernate60
5.1 Mapping von persistenten Klassen61
5.2 Mapping von einfachen Properties61
5.2.1 Persistente Properties61
5.2.2 Spalteneigenschaften festlegen62
5.2.3 Enumerations63
5.2.4 Zeitbasierte Properties64
5.2.5 Blobs und Clobs64
5.3 Mapping von Identifier-Properties65
5.3.1 Manuell vergebene Schlüssel65
5.3.2 Automatisch generierte Schl ¨ussel66
5.3.3 Natürliche Schlüssel68
5.4 Mapping von Beziehungen69
5.4.1 1:N-Beziehungen69
5.4.2 Bags, Lists, Arrays, Sets, Collections und Maps77
5.4.3 Equals und HashCode implementieren79
5.4.4 M:N-Beziehungen81
5.4.5 1:1-Beziehungen84
5.4.6 Unidirektionale Beziehungen rückwärts navigieren89
5.4.7 Lazy Loading90
5.5 Mapping von Vererbung92
5.5.1 Eine Tabelle für die ganze Klassenhierarchie93
5.5.2 Eine Tabelle pro Klasse96
5.5.3 Eine Tabelle pro konkreter Subklasse97
5.5.4 Polymorphe Beziehungen97
5.6 Mapping mit XML98
5.7 Weitere Mapping-Elemente99
Kapitel 6 Einführung in Spring100
6.1 Grundlagen100
6.1.1 Lightweight-Container100
6.1.2 Inversion of Control101
6.1.3 Dependency-Injection102
6.2 Überblick und Einstieg in Spring104
6.2.1 Übersicht über die Spring-Module104
6.2.2 Erstellung eines Spring-Projekts107
6.2.3 Konfiguration des Application-Contexts110
6.3 Spring-Beans und ihre Definitionen111
6.3.1 Erzeugung einer Spring-Bean111
6.3.2 Properties und Abhängigkeiten von Spring-Beans113
6.3.3 Collections und andere Util-Klassen119
6.3.4 Der Life-Cycle von Spring-Beans122
6.4 Spring Inversion-of-Control-Container124
6.4.1 Die Bean-Factory-Schnittstelle124
6.4.2 Weitergehende Funktionalität mit demApplication-Context125
6.5 Individualisieren des Containers127
6.5.1 Veränderung von Bean-Definitionen127
6.5.2 Nachbearbeitung von Beans129
6.5.3 Definition individueller Property-Editors131
Kapitel 7 Die Datenzugriffsschicht134
7.1 Vorteile von Spring im Kontext einesO/R-Mappers135
7.2 Hibernate-Konfiguration mit Spring136
7.2.1 Definition der JDBC-DataSource136
7.2.2 Definition der Hibernate-SessionFactory137
7.3 Abfragen mit einem Data-Access-Objekt139
7.3.1 Objekte mit dem Primärschlüssel laden139
7.3.2 Konfiguration der DAO-Klasse als Spring-Bean140
7.3.3 Eine DAO-Finder-Methode140
7.4 Test der DAO-Klassen142
7.4.1 Das Spring-Test-Framework142
7.4.2 Test einer DAO-Abfrage-Methode144
7.4.3 Weitere Methoden in der Spring-Test-Klassenhierarchie147
7.4.4 Initialisierung der Test-Klasse148
7.4.5 Autowire by Name148
7.5 Weitere Features der Hibernate Query Language149
7.5.1 Die select-Klausel149
7.5.2 Funktionen150
7.5.3 Die from-Klausel151
7.5.4 Die where-Klausel152
7.5.5 Subquery152
7.5.6 Gruppierung153
7.6 Zusätzliche Hibernate-Zugriffsmöglichkeiten153
7.6.1 Weitere Methoden in HibernateTemplate153
7.6.2 Die HibernateCallback-Klasse156
7.6.3 Eine Paged-Abfrage156
7.6.4 DAO-Implementierung ohne HibernateDaoSupport158
7.6.5 DAO-Implementierung ohne Spring158
7.7 Die Criteria-API160
7.7.1 Ein Criteria-basiertes Beispiel160
7.7.2 Test einer Criteria-basierten Methode161
7.7.3 Query-by-Example161
7.7.4 Aggregat-Funktionen163
7.8 DAO-Schreibmethoden164
7.8.1 Neue Objekte speichern164
7.8.2 Aktualisieren eines persistenten Objekts165
7.8.3 Aktualisieren eines detachten Objekts165
7.8.4 Das Flush-Problem in Tests166
7.9 Arbeiten mit Stored Procedures168
7.9.1 Aufruf über JDBC168
7.9.2 Aufruf über Spring169
7.9.3 Aufruf über Hibernate170
7.9.4 Empfehlung171
Kapitel 8 Services mit Spring172
8.1 Allgemeine Themen bei der Implementierungder Service-Schicht172
8.2 Der Use-Case ”Pizza-Bestellung“175
8.2.1 Implementierung einer Service-Methode175
8.2.2 Test der Service-Methode177
8.3 Aufnehmen einer weiterenin einer Bestellung178
8.3.1 Testen mit Mock-Objekten179
8.4 Spring AOP – einfach und mächtig182
8.4.1 Konzept des Aspect-Oriented Programming182
8.4.2 Spring-AOP: Annotations und XML184
8.4.3 Pointcuts in Spring185
8.4.4 Advices in Spring186
8.4.5 Bin¨arcode erzeugen – JDK versus CGLIB190
8.4.6 Testen des Aspekts190
8.4.7 Das Spring-Aspekt-Toolset192
8.5 Transaktionen in Spring194
8.5.1 Grundlagen und das ACID-Prinzip195
8.5.2 Der Transaktionsmanager196
8.5.3 Beeinflussung des Transaktionsverhaltens198
8.5.4 Transaktionsverläufe200
8.5.5 Deklarative Transaktionsdurchführung202
8.5.6 Programmatische Transaktionsdurchführung208
8.5.7 Durchführung von Transaktionstests210
Kapitel 9 Webanwendungen mit Spring und Hibernate214
9.1 Die Beispielanwendungen214
9.2 Spring und Webanwendungen217
9.2.1 Laden des Application-Contexts218
9.2.2 Integration mit JavaServer Faces220
9.2.3 Gültigkeitsbereich von Spring-Beans222
9.3 Hibernate und Webanwendungen224
9.3.1 OpenSessionInViewFilter224
9.3.2 Detached Objekte227
9.3.3 NonUniqueObjectException232
9.3.4 Behandlung von Exceptions234
9.3.5 Konkurrierender Zugriff235
9.3.6 Nebenläufigkeit237
9.3.7 Connection-Pooling239
9.3.8 Caching241
9.4 Zugriffsschutz mit Acegi246
9.4.1 Authentifizierung247
9.4.2 Autorisierung252
9.4.3 Filter in Reihenschaltung254
9.4.4 Acegi-Tags257
9.4.5 Acegi und JSF257
9.5 Alles im Fluss mit Spring Web Flow259
9.5.1 Endlich automatisch261
9.5.2 Spring Web Flow mit JavaServer Faces263
9.5.3 Flow-Persistence-Context266
9.6 Testmöglichkeiten272
9.6.1 Test von JSF-Komponenten und Spring272
9.6.2 Testbeispiel Bestellvorgang275
Kapitel 10 Integration in die JEE-Welt280
10.1 Eine RMI-Anbindung282
10.1.1 Exportieren der Service-Schnittstelle283
10.1.2 Konfiguration der Client-Anbindung284
10.1.3 Implementierung der Client-Klasse285
10.2 Die EJB-Schicht der Opiz-Anwendung286
10.3 Implementierung einer Stateless-Session-Bean287
10.3.1 Die Remote- und Home-Schnittstellen287
10.3.2 Die Implementierung der Session-Bean288
10.3.3 Die BeanFactory finden289
10.3.4 Deployment291
10.4 Stateful-Session-Beans292
10.4.1 Remote- und Home-Schnittstellen292
10.4.2 Die Implementierung der Stateful-Session-Bean293
10.4.3 Deployment294
10.5 Message-Driven-Beans294
10.6 Client-Anbindung an den EJB-Container294
10.6.1 Zugriff auf eine Stateless-Session-Bean295
10.6.2 Zugriff auf eine Stateful-Session-Bean297
10.7 Testmöglichkeiten299
10.8 Springs Unterstützung für JMX301
10.8.1 Registrierung der Spring-Beans beim JMX-Server302
10.8.2 Konfiguration mit einem Interface303
10.8.3 Konfiguration mit Annotations304
10.8.4 JMX ohne einen Applikations-Server?306
10.9 Spring-Integration von JCA308
10.9.1 Konfiguration des Resource-Adapters309
10.9.2 Nutzung des Resource-Adapters310
Stichwortverzeichnis314

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

Berufsstart Bewerbung

Berufsstart Bewerbung

»Berufsstart Bewerbung« erscheint jährlich zum Wintersemester im November mit einer Auflage von 50.000 Exemplaren und ermöglicht Unternehmen sich bei Studenten und Absolventen mit einer ...

bank und markt

bank und markt

Zeitschrift für Banking - die führende Fachzeitschrift für den Markt und Wettbewerb der Finanzdienstleister, erscheint seit 1972 monatlich. Leitthemen Absatz und Akquise im Multichannel ...

Computerwoche

Computerwoche

Die COMPUTERWOCHE berichtet schnell und detailliert über alle Belange der Informations- und Kommunikationstechnik in Unternehmen – über Trends, neue Technologien, Produkte und Märkte. IT-Manager ...

küche + raum

küche + raum

Internationale Fachzeitschrift für Küchenforschung und Küchenplanung. Mit Fachinformationen für Küchenfachhändler, -spezialisten und -planer in Küchenstudios, Möbelfachgeschäften und den ...

dental:spiegel

dental:spiegel

dental:spiegel - Das Magazin für das erfolgreiche Praxisteam. Der dental:spiegel gehört zu den Top 5 der reichweitenstärksten Fachzeitschriften für Zahnärzte in Deutschland (laut LA-DENT 2011 ...

DGIP-intern

DGIP-intern

Mitteilungen der Deutschen Gesellschaft für Individualpsychologie e.V. (DGIP) für ihre Mitglieder Die Mitglieder der DGIP erhalten viermal jährlich das Mitteilungsblatt „DGIP-intern“ ...

building & automation

building & automation

Das Fachmagazin building & automation bietet dem Elektrohandwerker und Elektroplaner eine umfassende Übersicht über alle Produktneuheiten aus der Gebäudeautomation, der Installationstechnik, dem ...

Euro am Sonntag

Euro am Sonntag

Deutschlands aktuelleste Finanz-Wochenzeitung Jede Woche neu bietet €uro am Sonntag Antworten auf die wichtigsten Fragen zu den Themen Geldanlage und Vermögensaufbau. Auch komplexe Sachverhalte ...