JPA

Definicja #

JPA (Java Persistence API) to oficjalny standard Javy (część Jakarta EE) definiujący sposób mapowania obiektów Java na relacyjne bazy danych. JPA samo w sobie jest specyfikacją — implementację dostarczają dostawcy ORM, z których najważniejszy to Hibernate.

Kluczowe elementy JPA:

  • Adnotacje mapowania@Entity, @Table, @Id, @GeneratedValue, @Column, @OneToMany, @ManyToOne, @ManyToMany
  • EntityManager — centralne API do operacji CRUD: persist, merge, remove, find
  • JPQL (Java Persistence Query Language) — obiektowy język zapytań niezależny od dialektu SQL
  • Criteria API — type-safe, programowe budowanie zapytań
  • Lifecycle callbacks@PrePersist, @PostLoad do logiki przed/po operacjach
  • Cascade operations — automatyczna propagacja operacji na powiązane encje
  • Lazy/Eager loading — kontrola ładowania powiązanych kolekcji

W Spring Boot JPA jest używany przez Spring Data JPA, który dodaje warstwę Repository Pattern i automatycznie generuje zapytania z nazw metod (findByEmailAndActive()).

Zastosowania #

  • Mapowanie klas domenowych Java na tabele bazy danych przez adnotacje — eliminacja ręcznego SQL dla operacji CRUD
  • Definiowanie relacji między encjami (@OneToMany, @ManyToMany) z obsługą cascade i lazy loading
  • Pisanie zapytań JPQL do pobierania złożonych grafów obiektów niezależnie od dialektu SQL
  • Integracja z Spring Data JPA do automatycznego generowania repozytoriów i zapytań z nazw metod
  • Zarządzanie transakcjami przez @Transactional w aplikacjach Spring Boot i Jakarta EE

Ścieżka nauki #

Naukę JPA najlepiej połączyć z konkretną implementacją — Hibernate lub Spring Data JPA. Oficjalna dokumentacja Hibernate (hibernate.org/documentation) i Spring Data JPA (spring.io/projects/spring-data-jpa) to dobre punkty startowe. Książka "Java Persistence with Spring Data and Hibernate" Christiana Bauera jest kompleksowym zasobem.

Zacznij od podstaw: konfiguracja datasource, adnotacje @Entity/@Id, proste operacje CRUD przez EntityManager lub JpaRepository. Następnie poznaj relacje (@OneToMany z mappedBy, @ManyToMany z @JoinTable), strategie fetchowania i problem N+1 (i jak go rozwiązać przez JOIN FETCH lub EntityGraph).

Na poziomie zaawansowanym: Criteria API, Second Level Cache (Ehcache/Redis), optymistyczna blokada (@Version), audyt encji (@CreatedDate, @ModifiedDate) i migracje schematów przez Flyway/Liquibase. Zrozumienie problemu N+1 i sposobów jego rozwiązania jest kluczowe dla wydajnych aplikacji JPA.

Ostatnia aktualizacja:

Powiązane hasła

Technologie i biblioteki, które najczęściej pojawiają się razem z JPA w ogłoszeniach.

Cały słownik IT

Przeglądaj słownik IT alfabetycznie

Wybierz literę, aby zobaczyć wszystkie hasła zaczynające się od niej.