🔁 Wiederholen
DBI/NVS
›
JPA Basics
›
Entity & Keys
Warum wichtig? Ohne
@Entity und @Id weiß JPA nicht einmal, dass diese Klasse existiert. Diese Annotationen sind in jeder HTL-Aufgabe und Matura-Prüfung vorhanden — sie sind das Fundament.
0 / 10
DBI/NVS›
Column Mapping
Warum wichtig? In der Praxis sind fehlendes
nullable=false oder falscher Enum-Typ häufige Bugs. @Transient verhindert, dass berechnete Felder versehentlich persistiert werden.
0 / 11
DBI/NVS›
EntityManager
Warum wichtig? Jede JPA-Operation läuft über den
EntityManager. Das Lifecycle-Modell (NEW → MANAGED → DETACHED → REMOVED) ist Kern der mündlichen Matura-Prüfung.
// EntityManager — Zustandsübergänge
NEW
──→──
persist()
→ in Context aufnehmen
MANAGED
──→──
remove()
→ zum Löschen markiert
MANAGED
──→──
detach()
→ aus Context entfernt
DETACHED
──→──
merge()
→ neue managed Kopie
MANAGED
──→──
flush()
→ SQL sofort ausführen
MANAGED
──→──
refresh()
→ DB-Stand neu laden
0 / 12
DBI/NVS›
Relationships
Warum wichtig?
mappedBy falsch gesetzt → doppelte Join-Tabellen. orphanRemoval vergessen → Datenmüll. EAGER statt LAZY → N+1-Query-Problem.
0 / 12
DBI/NVS›
Vererbung
Warum wichtig? Die Wahl der Inheritance-Strategie beeinflusst Performance drastisch.
SINGLE_TABLE ist schnell aber NULL-lastig; JOINED ist normalisiert aber JOIN-intensiv.
0 / 10
DBI/NVS›
JPQL & NamedQuery
Warum wichtig? JPQL mit
@NamedQuery ist die zentrale Abfragetechnik im Test. Path-Navigation (f.plane.seats), Fetch Join mit WHERE und Parameter-Binding (:named vs ?1) kommen direkt in der Angabe vor.
// JPQL Parameter-Typen
| Typ | Syntax | Beispiel |
|---|---|---|
| Named | :paramName | WHERE b.lastName = :name → setParameter("name", "Smith") |
| Positional | ?1, ?2 | WHERE p.pType = ?1 → setParameter(1, "Airbus 380") |
| NamedQuery | @NamedQuery(name=, query=) | em.createNamedQuery("Flight.findByOp", Flight.class) |
| Fetch Join | JOIN FETCH | SELECT f FROM Flight f JOIN FETCH f.bookings WHERE … |
| MEMBER OF | :x MEMBER OF c | WHERE :tire MEMBER OF p.tireTypes |
0 / 12
DBI/NVS
›
Abfragen
›
JPQL Vertieft
Warum wichtig? JPQL ist die Abfragesprache von JPA — objektorientiert statt SQL-tabellenorientiert. JOIN FETCH verhindert N+1-Desaster, TypedQuery macht Code sicher, Paginierung ist in jeder REST-API nötig. Matura-Themen: JPQL-Syntax, Aggregate, Bulk-Operationen.
0 / 14
DBI/NVS
›
Konfiguration
›
Konfig & Lifecycle
Warum wichtig? Ohne
persistence.xml läuft kein JPA-Projekt. hibernate.show_sql, connection.url und schema-generation sind Pflicht im Test. @Column(name=) mappt Java-Felder auf abweichende Spaltennamen — z.B. flightoperator.
0 / 10