Sie sind hier
E-Book

Spring & Hibernate

Eine praxisbezogene Einführung

AutorRichard Oates, Thomas Langer, Stefan Wille, Torsten Lueckow, Gerald Bachlmayr
VerlagCarl Hanser Fachbuchverlag
Erscheinungsjahr2008
Seitenanzahl320 Seiten
ISBN9783446416307
FormatPDF
KopierschutzWasserzeichen/DRM
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

Python für Kids

E-Book Python für Kids

Hans-Georg Schumann zeigt dir in diesem Buch, woraus die Programmiersprache Python besteht und wie leicht man damit Ideen in Befehle für den Computer umsetzen kann. Von Grund auf lernst du, einfache ...

Weitere Zeitschriften

ARCH+.

ARCH+.

ARCH+ ist eine unabhängige, konzeptuelle Zeitschrift für Architektur und Urbanismus. Der Name ist zugleich Programm: mehr als Architektur. Jedes vierteljährlich erscheinende Heft beleuchtet ...

aufstieg

aufstieg

Zeitschrift der NaturFreunde in WürttembergDie Natur ist unser Lebensraum: Ort für Erholung und Bewegung, zum Erleben und Forschen; sie ist ein schützenswertes Gut. Wir sind aktiv in der Natur und ...

FREIE WERKSTATT

FREIE WERKSTATT

Hauptzielgruppe der FREIEN WERKSTATT, der unabhängigen Fachzeitschrift für den Pkw-Reparaturmarkt, sind Inhaberinnen und Inhaber, Kfz-Meisterinnen und Kfz-Meister bzw. das komplette Kfz-Team Freier ...

AUTOCAD & Inventor Magazin

AUTOCAD & Inventor Magazin

FÜHREND - Das AUTOCAD & Inventor Magazin berichtet seinen Lesern seit 30 Jahren ausführlich über die Lösungsvielfalt der SoftwareLösungen des Herstellers Autodesk. Die Produkte gehören zu ...

Die Versicherungspraxis

Die Versicherungspraxis

Behandlung versicherungsrelevanter Themen. Erfahren Sie mehr über den DVS. Der DVS Deutscher Versicherungs-Schutzverband e.V, Bonn, ist der Interessenvertreter der versicherungsnehmenden Wirtschaft. ...

ea evangelische aspekte

ea evangelische aspekte

evangelische Beiträge zum Leben in Kirche und Gesellschaft Die Evangelische Akademikerschaft in Deutschland ist Herausgeberin der Zeitschrift evangelische aspekte Sie erscheint viermal im Jahr. In ...

elektrobörse handel

elektrobörse handel

elektrobörse handel gibt einen facettenreichen Überblick über den Elektrogerätemarkt: Produktneuheiten und -trends, Branchennachrichten, Interviews, Messeberichte uvm.. In den monatlichen ...

VideoMarkt

VideoMarkt

VideoMarkt – besser unterhalten. VideoMarkt deckt die gesamte Videobranche ab: Videoverkauf, Videoverleih und digitale Distribution. Das komplette Serviceangebot von VideoMarkt unterstützt die ...