HomeSeminareJavaHIBERNATE

OR-Mapping mit Hibernate und JPA

Hibernate zählt zu den etablierten Frameworks für objektrelationale Abbildung (ORM) in Java-Anwendungen und bildet zusammen mit der ›Jakarta Persistence‹ API (JPA) die Grundlage vieler moderner Enterprise-Anwendungen. Das Seminar vermittelt die Entwicklung persistenter Anwendungen mit Hibernate und Jakarta Persistence unter Verwendung aktueller Hibernate-Versionen und moderner Java-Technologien. Die Teilnehmer lernen, wie Java-Klassen, Beziehungen und Vererbungsstrukturen effizient auf relationale Datenbanken abgebildet werden. Dabei werden sowohl standardisierte Jakarta-Persistence-Annotationen als auch Hibernate-spezifische Erweiterungen eingesetzt. Neben der Entwicklung von Entity-Klassen und Abfragen stehen Performance, Transaktionen, Caching, Fetch-Strategien und Best Practices für wartbare Anwendungen im Mittelpunkt. Das Seminar behandelt außerdem moderne Themen wie Criteria API, Bean Validation, Optimistic Locking, DTO-Projektionen, Logging und Testing sowie die Integration von Hibernate in Jakarta EE, Spring und containerisierte Anwendungen.
[decoration]

Inhalte des Seminars

Grundlagen von Hibernate und Jakarta Persistence

  • Objektorientierte Persistenz und ORM
  • ORM versus JDBC
  • Impedance Mismatch
  • Hibernate Architektur
  • Jakarta Persistence Spezifikation
  • Hibernate als JPA-Provider
  • Maven oder Gradle für Hibernate-Projekte
  • Modellierung mit Entity-Klassen
  • Jakarta Persistence Annotationen
  • Hibernate Tools und Schema-Generierung

Hibernate-Projekt mit Jakarta Persistence

  • Entity-Klassen entwickeln
  • Persistence Unit und META-INF/persistence.xml
  • Konfiguration über Hibernate Properties
  • EntityManagerFactory und EntityManager
  • Hibernate Session API
  • Persistence Context und Lebenszyklus von Entities
  • Zustände von Entities
  • persist, merge, remove, flush, refresh
  • find und getReference
  • EntityTransaction
  • Umgang mit Detached Entities
  • FlushMode
  • Automatische Schema-Generierung

Mapping mit Jakarta Persistence und Hibernate

  • @Entity, @Table
  • Persistente Attribute mit @Column
  • Datumswerte, Aufzählungen und Large Objects mit @Lob
  • Primärschlüssel mit @Id und @GeneratedValue
  • Zusammengesetzte Schlüssel mit @EmbeddedId und @IdClass
  • Eingebettete Komponenten mit @Embedded
  • @SecondaryTable
  • Named Queries
  • Beziehungen zwischen Entities
  • 1:1, 1:n, n:1 und n:m
  • @JoinColumn, mappedBy
  • Bidirektionale Beziehungen
  • Collections und Maps mit @MapKey
  • CascadeType, FetchType
  • Lazy Loading und Fetch Strategien
  • Vererbungsstrategien mit @Inheritance
  • @MappedSuperclass

Abfragen mit JPQL 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
  • Criteria API
  • Dynamische Abfragen
  • DTO-Projektionen
  • Native SQL Queries
  • Stored Procedures

Entity Listener und Validierung

  • Entity Listener
  • Callback-Methoden
  • @PrePersist, @PostPersist, @PostLoad
  • @EntityListeners
  • Bean Validation
  • Validierungsannotation und Constraint Validatoren

Transaktionen und Locking

  • Transaktionen mit Jakarta Transactions
  • Resource Local und JTA
  • Hibernate in Jakarta EE und Spring
  • Optimistic Locking mit @Version
  • Pessimistic Locking
  • Isolation und Konsistenz
  • Exception Handling bei Transaktionen

Hibernate Performance Tuning

  • Dirty Checking
  • First Level Cache
  • Second Level Cache
  • Cache Strategien
  • Lazy Loading gezielt einsetzen
  • Batch Processing
  • Bulk Updates
  • Stateless Session
  • Fetch Profiles
  • SQL Logging und Analyse
  • Performanceanalyse und Monitoring

Integration und moderne Hibernate-Entwicklung

  • Hibernate mit Jakarta EE
  • Hibernate mit Spring und Spring Boot
  • Konfiguration mit DataSource und Connection Pool
  • Migration von JDBC-Anwendungen
  • Integrationstests
  • Testcontainers für Datenbanktests
  • Containerisierung mit Docker
  • Multi-Tenancy Grundlagen

Best Practices

  • Identität und Gleichheit
  • Implementierung von equals und hashCode
  • Trennung von Entity und DTO
  • Vermeidung typischer Lazy-Loading-Probleme
  • Sinnvolle Transaktionsgrenzen
  • Wartbare Persistenzschichten
  • Hibernate-spezifische Erweiterungen
  • Überblick über aktuelle Entwicklungen in Hibernate und 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 und 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. Die Seminarteilnehmer arbeiten standardmäßig mit der aktuellen Version Hibernate ORM 7.3 und mit dem RDBMS H2.

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