Java Persistence API 2 - Hibernate, EclipseLink, OpenJPA und Erweiterungen

Bernd Müller, Harald Wehr

Java Persistence API 2

Hibernate, EclipseLink, OpenJPA und Erweiterungen

2012

354 Seiten

Format: PDF, Online Lesen

E-Book: €  31,99

E-Book kaufen

E-Book kaufen

ISBN: 9783446431294

 

Inhalt

6

Vorwort

14

1 Einführung

16

1.1 Motivation

16

1.1.1 De-facto-Standards

16

1.1.2 Zwei Welten treffen aufeinander

17

1.1.3 OR-Mapper etablieren sich

17

1.1.4 Aktualität und praktische Relevanz

18

1.2 JPA und JPA-Provider

18

1.2.1 JPA-Provider

18

1.2.2 Lizenzen

19

1.3 Über dieses Buch

19

1.3.1 Das Buch im Netz

19

1.3.2 Zur Sprache

20

1.3.3 Der Leser

20

1.3.4 Vollständigkeit

21

1.3.5 Beispielprogramme

22

1.3.6 Al, unser Strichmännchen

22

1.3.7 Die Struktur des Buches

23

2 Grundlegendes Mapping von Objekten

26

2.1 Primärschlüssel versus Objektidentität

26

2.1.1 Sequence-Generatoren

29

2.1.2 Table-Generatoren

31

2.2 POJO-Mapping

33

2.2.1 Was ist ein POJO?

34

2.2.2 Mapping-Optionen auf Entity-Ebene

35

2.2.3 Serialisierbarkeit von Entities

36

2.2.4 Der JPA-Zugriff auf Entity-Properties

37

2.2.5 Mapping-Optionen auf Property-Ebene

38

2.2.6 Die @Column-Annotation

43

2.3 Zusammengesetzte Schlüssel

46

2.3.1 Realisierung mit @IdClass

46

2.3.2 Realisierung mit @EmbeddedId

49

2.3.3 Realisierung mit @Embeddable

51

2.4 Mehrere Tabellen für ein Entity

52

3 Objektlebenszyklus

56

3.1 Der Zustand eines Entity

56

3.2 JPA in Java-SE-Anwendungen

57

3.2.1 Speichern von Entities

58

3.2.2 Laden von Entities

60

3.2.3 Aktualisieren von Entities

62

3.2.4 Löschen von Entities

64

3.2.5 Weitere Operationen auf Entities

64

3.2.6 Konfiguration

66

3.3 JPA in Java-EE-Anwendungen

68

3.3.1 Konfiguration

69

3.3.2 Speichern und Laden von Entities

72

3.3.3 Aktualisieren und Löschen von Entities

75

3.3.4 Der erweiterte Persistenzkontext

76

3.3.5 Analyse und Zusammenfassung

77

3.4 Callback-Methoden und Entity-Listener

78

3.4.1 Callback-Methoden

79

3.4.2 Entity-Listener

80

3.4.3 Default-Listener

81

3.4.4 Callbacks und Listener zur Validierung

83

3.5 Das neue Zustands-API

84

3.6 Das Packaging von Anwendungen

86

3.6.1 Packaging von Web-Anwendungen

86

3.6.2 Allgemeines Packaging

86

3.7 Mapping-Metadaten in XML

88

4 Objekte und Beziehungen

90

4.1 Standardbeziehungen

90

1:1-Beziehungen

91

Bidirektionale 1:1-Beziehungen

96

1:n- und n:1-Beziehungen

97

Bidirektionale 1:n-Beziehungen

99

n:m-Beziehungen

105

Bidirektionale n:m-Beziehungen

108

4.2 Andere Beziehungsarten

110

4.2.1 Assoziationsklassen

110

4.2.2 Rekursive Beziehungen

114

4.2.3 Geordnete Beziehungen

115

4.2.4 Beziehungen als Abbildungen

120

4.3 Wertemengen

121

4.3.1 Wertemengen ohne JPA

122

4.3.2 Einfache Datentypen

123

4.3.3 Einbettbare Datentypen

126

4.4 Beziehungen und Performanz

131

5 Vererbung

134

5.1 Eine Tabelle für eine Vererbungshierarchie

134

5.2 Eine Tabelle je Unterklasse

140

5.3 Eine Tabelle je konkreter Klasse

142

5.4 Vergleich der Vererbungsstrategien

144

5.4.1 Eine Tabelle für eine Vererbungshierarchie

144

5.4.2 Eine Tabelle je Unterklasse

145

5.4.3 Eine Tabelle je konkreter Klasse

145

5.5 Mapping von Oberklassen

145

5.6 Kombination von Vererbungsstrategien

147

6 Transaktionen

150

6.1 Probleme des Mehrbenutzerbetriebs

151

6.2 Isolation-Level

153

6.3 Transaktionen in der JPA

154

6.3.1 Konkurrierende Zugriffe

156

6.3.2 Optimistisches Locking

158

6.3.2.1 LockModeType.OPTIMISTIC

158

6.3.2.2 LockModeType.OPTIMISTIC_FORCE_INCREMENT

161

6.3.3 Pessimistisches Locking

161

6.3.3.1 LockModeType.PESSIMISTIC_READ

162

6.3.3.2 LockModeType.PESSIMISTIC_WRITE und LockModeType.PESSIMISTIC_FORCE_INCREMENT

162

6.3.3.3 Pessimistische Locks in der Praxis

162

6.3.4 Locks für Objekte erhalten

166

6.3.5 Caching

167

6.3.6 Vor- und Nachteile des Caching

172

6.4 Konversationen

173

7 JPQL (Java Persistence Query Language)

178

7.1 JPA-Query-Interfaces

179

7.1.1 Named Queries

182

7.1.2 Parameter für Abfragen

184

7.1.3 Direkte SQL-Abfragen

185

7.2 Elemente der Java Persistence Query Language (JPQL)

189

7.3 Die From-Klausel

189

7.3.1 Implizite Joins

190

7.3.2 Inner-Joins

190

7.3.3 Left-Joins

192

7.3.4 Fetch-Joins

193

7.3.5 Joins ohne definierte Mapping-Beziehungen

194

7.4 Selektionen mit Where

194

7.4.1 Unterabfragen (Subselects)

196

7.4.2 Funktionen

197

7.5 Projektionen mit Select

199

7.5.1 Aggregationsfunktionen

200

7.5.2 Gruppieren von Daten mit Group By und Having

201

7.5.3 Ergebnisse sortieren mit Order By

202

7.5.4 Konstruktoren im Select-Statement

203

7.6 Update- und Delete-Statements

203

7.7 Flush-Modi und Abfragen

205

8 Das Criteria-API

208

8.1 Der statische Zugriff

209

8.1.1 Grundsätze der Generierung

209

8.1.2 Manuelle und automatische Generierung

210

8.2 Abfragen mit der Criteria-API

213

8.2.1 Join-Bedingungen in der Criteria-API

213

8.2.2 Einschränkung der Ergebnismenge

216

8.2.3 Selektion der Ausgabe

217

8.2.4 Unterabfragen

221

8.2.5 Gruppierungen mit Group By und Having und Sortierungen mit Order By

223

8.2.6 Benutzung von datenbankspezifischen Funktionen

224

8.2.7 Modifikation von bestehenden Abfragen

224

8.3 Der dynamische Zugriff

225

9 Bean-Validierung mit JSR 303

228

9.1 Einfache Validierungen

228

9.2 Beziehungen und eingebettete Objekte

232

9.3 Konfiguration

234

9.4 Explizite Validierung

235

9.5 Validierungsgruppen

237

9.6 Anwendungsdefinierte Validierungs-Constraints

240

9.7 Validierung mit XML

241

10 JPA-Konfiguration

244

10.1 Persistenzeinheiten

244

10.2 Mapping-Dateien und Annotationen

247

10.2.1 Das Element

248

10.2.2 Das Element

249

10.2.3 Das Element

250

10.2.4 Das Element

250

10.2.5 Das Element

251

10.2.6 Das Element

252

10.2.7 Das Element

252

10.2.8 Das Element

253

10.2.9 Das Element

253

10.2.10 Das Element

255

10.2.11 Das Element

256

10.2.12 Das Element

256

10.2.13 Das Element

257

10.2.14 Das Element

257

10.2.15 Das Element

258

10.2.16 Das Element

258

10.2.17 Das Element

259

10.2.18 Das Element

260

10.2.19 Das Element

260

10.2.20 Das Element

261

10.2.21 Das Element

262

10.2.22 Das Element

263

10.2.23 Das Element

263

10.2.24 Das Element

264

10.2.25 Das Element

265

10.2.26 Das Element

265

10.2.27 Das Element

266

10.2.28 Die Elemente und

267

10.2.29 Das Element

268

10.2.30 Das Element

269

10.2.31 Das Element

270

10.2.32 Das Element

270

10.2.33 Das Element

271

10.2.34 Das Element

271

10.2.35 Das Element

272

10.2.36 Das Element

272

10.2.37 Das Element

273

10.2.38 Das Element

273

10.2.39 Das Element

273

Die weiteren -Elemente

274

11 Hibernate-Erweiterungen

276

11.1 Caching

277

11.1.1 Objekt-Cache

280

11.1.2 Query-Cache

282

11.2 Instrumentation

283

11.3 Hibernate-Search

285

11.3.1 Lucene

285

11.3.2 Konfiguration in Hibernate

286

11.3.3 Hibernate-Bridges

290

11.3.4 Abfragen mit der Lucene-Syntax

293

11.4 Envers

294

11.4.1 Einfache Auditierung

294

11.4.2 Auditieren von Beziehungen

297

11.4.3 Typische Anwendungsfälle

298

11.4.4 Die Auditierungsstrategie

300

12 EclipseLink-Erweiterungen

302

12.1 Caching

302

12.1.1 Objekt-Cache

304

12.1.2 Query-Cache

307

12.2 Weaving

308

12.3 Mandantenfähigkeit

310

13 OpenJPA-Erweiterungen

314

13.1 Caching

314

13.1.1 Object-Cache

315

13.1.2 Query-Cache

317

13.2 Enhancement

319

13.3 Slice

321

13.3.1 Konfiguration

321

13.3.2 Verteilungsstrategien

322

14 Ausblick auf JPA 2.1

326

Literaturverzeichnis

330

URL-Verzeichnis

332

Stichwortverzeichnis

334

 

© 2009-2024 ciando GmbH