HomeSeminareJavaJPA

Jakarta Persistence (JPA)

Die ›Jakarta Persistence‹ API (JPA) ist der Standard zur objektrelationalen Abbildung (ORM) in Java- und Jakarta-EE-Anwendungen. Sie ermöglicht die persistente Speicherung von Java-Objekten in relationalen Datenbanken und bildet die Grundlage vieler moderner Enterprise-Anwendungen. Das Seminar vermittelt die Entwicklung persistenter Anwendungen mit Jakarta Persistence und aktuellen JPA-Providern wie Hibernate oder EclipseLink. Die Teilnehmer lernen, wie Entity-Klassen modelliert, Beziehungen definiert und Datenbankzugriffe effizient umgesetzt werden. Neben den standardisierten Jakarta-Persistence-Annotationen und der Entity-Manager-API behandelt die Weiterbildung moderne Themen wie Criteria API, DTO-Projektionen, Entity Graphs, Bean Validation, Transaktionen, Locking sowie Performance-Optimierung durch Fetch-Strategien und Caching. Die Inhalte werden praxisnah anhand moderner Java- und Jakarta-EE-Anwendungen vermittelt und berücksichtigen aktuelle Entwicklungsansätze mit Spring, Jakarta EE und containerisierten Umgebungen.
[decoration]

Inhalte des Seminars

Grundlagen des objektrelationalen Mappings mit Jakarta Persistence

  • ORM und objektrelationale Abbildung
  • ORM versus JDBC
  • Impedance Mismatch zwischen Objekten und Relationen
  • Jakarta Persistence Spezifikation
  • JPA-Provider wie Hibernate ORM und EclipseLink
  • Jakarta Persistence im Kontext von Jakarta EE und Spring
  • Modellierung mit Entity-Klassen
  • Annotationen für objektrelationale Metadaten
  • Maven oder Gradle für JPA-Projekte
  • Werkzeuge und Schema-Generierung

Annotationen und Entity-Manager-API

  • Entity-Klassen entwickeln
  • Persistence Unit und Datei META-INF/persistence.xml
  • Konfiguration über Properties und DataSource
  • EntityManagerFactory und EntityManager
  • Persistence Context und Zustände von Entities
  • Identität und Primärschlüssel
  • persist, merge, remove, flush, refresh
  • find und getReference
  • EntityTransaction
  • Detached und Managed Entities
  • FlushMode
  • Lebenszyklus von Entities
  • Automatische Schema-Generierung

Fortgeschrittene Jakarta-Persistence-Annotationen

  • @Entity, @Table
  • Persistente Attribute mit @Column
  • Aufteilen auf mehrere Tabellen mit @SecondaryTable
  • Datumswerte, Enumerationen und Large Objects mit @Lob
  • Primärschlüssel mit @Id und @GeneratedValue
  • Zusammengesetzte Schlüssel mit @EmbeddedId und @IdClass
  • Eingebettete Komponenten mit @Embedded
  • Attribute Converter
  • Named Queries
  • Entity Graphs
  • Bean Validation

Assoziationen und Vererbung

  • Beziehungen zwischen Entities
  • 1:1, 1:n, n:1 und n:m
  • @JoinColumn und mappedBy
  • Bidirektionale Beziehungen
  • Collections und Maps mit @MapKey
  • Sortierung und Reihenfolge
  • CascadeType und FetchType
  • Lazy Loading und Fetch Strategien
  • Vererbungsstrategien mit @Inheritance
  • @MappedSuperclass
  • Embeddables und Value Objects

Jakarta Persistence Query Language und Criteria API

  • Jakarta Persistence Query Language (JPQL)
  • select, from, where
  • Alias definieren
  • distinct, group by, having, order by
  • Aggregatfunktionen
  • Joins und Fetch Joins
  • Polymorphe Abfragen
  • Benannte und positionale Parameter
  • Bulk-Updates
  • N+1-Problem erkennen und vermeiden
  • Criteria API
  • Dynamische Abfragen
  • DTO-Projektionen
  • Native SQL Queries
  • Stored Procedures

Entity Listener und Lifecycle Callbacks

  • Entity Listener
  • Callback-Methoden
  • @PrePersist, @PostPersist, @PostLoad
  • @EntityListeners
  • Auditing Grundlagen

Integration in Anwendungen

  • Jakarta Persistence in Jakarta EE
  • Jakarta Persistence mit Spring und Spring Boot
  • Repository- und DAO-Pattern
  • Persistence Context und Extended Persistence Context
  • Transaktionsgrenzen
  • Webanwendungen mit JPA
  • Integration in REST-Anwendungen

Transaktionen und Locking

  • Resource Local und JTA
  • Container Managed Transactions
  • Schnittstellen zur Transaktionssteuerung
  • Optimistisches Locking mit @Version
  • Pessimistisches Locking
  • Isolation und Konsistenz
  • Exception Handling bei Transaktionen

Performance Tuning und Optimierung

  • First Level Cache
  • Second Level Cache
  • Caching Strategien
  • Lazy Loading gezielt einsetzen
  • Fetch Strategien optimieren
  • SQL Logging und Analyse
  • Batch Processing
  • Bulk Inserts und Updates
  • Zugriff auf Native SQL
  • Analyse von SQL-Ausführungsplänen

Moderne Entwicklungen und Best Practices

  • Java Streams und Date-Time-API
  • DTOs und Projektionen
  • Trennung von Entity und API-Modellen
  • Testen von Persistenzschichten
  • Testcontainers für Datenbanktests
  • Containerisierung mit Docker
  • Wartbare Persistenzarchitekturen
  • Proprietäre Erweiterungen moderner JPA-Provider
  • Überblick über aktuelle Entwicklungen in Jakarta Persistence

Die Fakten

  • Schulungsdauer: 3 Tage, insgesamt 24 Unterrichtsstunden à 45 Minuten
  • Gesamtumfang: 24 Unterrichtsstunden à 45 Minuten
  • Zielgruppe: Softwareentwickler
  • Vorkenntnisse: Der Kurs ›Java für Fortgeschrittene‹, ›Java für Umsteiger‹ oder vergleichbare Kenntnisse in der Datenbankanbindung mit Java.
  • Schulungsunterlagen: Umfassende Seminarunterlagen und Referenzdokumentation
  • Softwareumgebung: Java 25 ist die verwendete LTS Standardversion. Als Entwicklungsumgebung dient standardmäßig IntelliJ IDEA. Alternativ können auch die Eclipse IDE oder Visual Studio Code verwendet werden. Das Seminar ist grundsätzlich unabhängig vom JPA-Provider, sodass die Seminarinhalte für alle JPA-Implementierung wie Hibernate, EclipseLink, Apache OpenJPA, DataNucleus Access Platform gültig sind. Im Kurs wird standardmäßig mit der aktuellen Hibernate Version gearbeitet.

Termine / Kontakt

Wir helfen Ihnen gerne bei der Anmeldung und einen passenden Termin zu finden. Kontaktieren Sie uns per E-Mail oder unter 0800/tutegos (kostenlos aus allen Netzen).

Weiterführende Seminare

Java und XML, Jakarta Server Pages (JSP) und Servlets, Nebenläufige Programmierung mit Threads, Oracle Certified Professional Java Programmer (OCPJP), Refactoring, Design Pattern (Entwurfsmuster) in Java, Effektiv Java programmieren, Java Enterprise Architektur und Design Patterns

Verweise

Was Teilnehmer sagen