Przykład użycia JPA w starej wersji 2.1

W tym artykule zajmiemy się przykładem fragmentu aplikacji korzystającej ze specyfikacji Java Persistence API w wersji 2.1. Jest to więc trochę spojrzenie na JPA sprzed rebrandingu. Obecna wersja 3.2.0 (Jakarta Persistence API) była wydana w maju 2024. Jeśli twoja aplikacja była tworzona w latach 2013-2018, jest duża szansa, że korzystała z JPA 2.1 i może wymagać unowocześniania do nowej wersji. Zmiany mogą obejmować nie tylko rebranding na Jakarta Persistence API, ale także mieć wpływ na sposób, w jaki twój kod jest zarządzany i wykonywany.

Opis biznesowy

Głównym celem projektu jest pokazanie, jak skonfigurować i używać starsze wersje bibliotek do implementacji operacji CRUD (Create, Read, Update, Delete) w aplikacjach opartych na JPA (Java Persistence API). Projekt demonstruje, jak radzić sobie z konfiguracją i zarządzaniem zależnościami w czasach, gdy popularne rozwiązania jak Spring nie były jeszcze powszechnie używane lub dostępne.

Kod projektu jest dostępny w repozytorium na GitHubie pod adresem java-jpa-demos. Jest to fragment większej aplikacji, który dotyczy operacji na bazie danych. Ten projekt jest szczególnie wartościowy dla programistów chcących zrozumieć, jak starsze aplikacje były budowane i konfigurowane, zwłaszcza bez użycia nowszych technologii, takich jak Spring Framework.

Informacje techniczne

W niniejszym przykładzie będziemy rozważać program wykorzystujący następujące biblioteki.

  • MySQL Connector Java, wersja 8.0.26, data wydania 19.07.2021
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>8.0.26</version>
</dependency>

MySQL Connector/J w wersji 8.0.26 to sterownik JDBC dla MySQL, który umożliwia aplikacjom Java komunikację z bazą danych MySQL. Poniżej znajdziesz szczegółowe informacje o kompatybilności tej wersji z różnymi technologiami.

Java: MySQL Connector/J 8.0.26 jest kompatybilny z Java 8 i nowszymi wersjami, w tym Java 11 i Java 17. Jest zgodny z JDBC 4.2, co oznacza, że może wykorzystywać zaawansowane funkcje JDBC dostępne w nowszych wersjach Javy, takie jak np. „try-with-resources” oraz lepsze zarządzanie zasobami.

JPA (Java Persistence API): MySQL Connector/J działa z JPA 2.1 i nowszymi. Oznacza to, że może być używany z implementacjami JPA takimi jak EclipseLink czy Hibernate.

Hibernate ORM: MySQL Connector/J 8.0.26 jest kompatybilny z Hibernate 5.4 i nowszymi. Dzięki temu możesz korzystać z najnowszych funkcji oferowanych przez Hibernate, w tym wsparcia dla nowoczesnych typów danych i optymalizacji wydajności.

MySQL Server: MySQL Connector/J 8.0.26 jest kompatybilny z MySQL Server 5.7 i 8.0. Jest to ważne, ponieważ zapewnia wsparcie dla nowoczesnych funkcji i optymalizacji dostępnych w tych wersjach serwera MySQL.

TLS/SSL: Wersja 8.0.26 oferuje wsparcie dla najnowszych protokołów TLS, co zwiększa bezpieczeństwo połączeń z bazą danych.

  • Java Persistence API, Version 2.1, wersja 1.0.2.Final, data wydania 23.01.2018
<dependency>
  <groupId>org.hibernate.javax.persistence</groupId>
  <artifactId>hibernate-jpa-2.1-api</artifactId>
  <version>1.0.2.Final</version>
</dependency>

Biblioteka hibernate-jpa-2.1-api w wersji 1.0.2.Final jest częścią specyfikacji JPA (Java Persistence API) i jest używana jako implementacja standardu JPA 2.1. Poniżej znajdziesz szczegółowe informacje o kompatybilności tej wersji z różnymi technologiami.

Java: Specyfikacja JPA 2.1 jest kompatybilna z wersjami Java SE 6, 7, 8. Wersje późniejsze niż Java 8 mogą również działać, ale należy zwrócić uwagę na kompatybilność całego stosu technologicznego.

Hibernate ORM: Hibernate 4.3.x i nowsze wersje są zgodne ze specyfikacją JPA 2.1. Zaleca się używanie co najmniej Hibernate 5.0 dla lepszej wydajności i wsparcia.

Serwery aplikacyjne: JPA 2.1 jest wspierana przez wiele popularnych serwerów aplikacyjnych, takich jak WildFly 8+, JBoss EAP 6.3+, GlassFish 4+, WebLogic 12c, WebSphere 8.5.5. WildFly 8 i późniejsze wersje mają wbudowaną obsługę JPA 2.1.

Frameworki webowe: Spring 4.x w pełni wspiera JPA 2.1. Użycie Spring Data JPA umożliwia łatwą integrację z Hibernate jako dostawcą JPA. Specyfikacja JPA 2.1 jest częścią Java EE 7.

  • Hibernate Core Relocation, wersja 5.5.7.Final, data wydania 25.08.2021
<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-core</artifactId>
  <version>5.5.7.Final</version>
</dependency>
  • Hibernate EntityManager Relocation, wersja 5.5.7.Final, data wydania 25.08.2021
<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-entitymanager</artifactId>
  <version>5.5.7.Final</version>
</dependency>

Podsumowanie

W niniejszym artykule pokazaliśmy, że aplikacje wykorzystujące starsze wersje bibliotek JPA nadal mogą działać poprawnie. Jednakże, należy mieć świadomość, że wraz z nowymi wersjami JPA 2.2 i 3.0 zostały wprowadzone nowe funkcje i usprawnienia, które mogą istotnie zwiększyć wydajność i elastyczność aplikacji. Przykładowo, JPA 2.2 wprowadził wsparcie dla nowych typów zapytań (np. derived queries, native queries) oraz usprawnienia w obszarze zarządzania transakcjami. Z kolei wersja 3.0, rozszerzyła możliwości integracji z nowoczesnymi technologiami i narzędziami. Przed przeprowadzeniem aktualizacji z JPA 2.1 należy przeanalizować zmiany wprowadzone w nowych wersjach bibliotek zależności oraz opracować odpowiednie testy integracyjne, aby upewnić się, że aplikacja po migracji będzie działać zgodnie z oczekiwaniami.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *