Zmiany w zachowaniu interfejsu API Java Persistence API 2.1
Jeśli w aplikacjach jest już używana opcja jpa-2.0 , należy kontynuować korzystanie z opcji jpa-2.0 dla istniejących aplikacji, aby uniknąć problemów z migracją. W przypadku nowych aplikacji najlepiej jest korzystać z opcji jpa-2.1 , która umożliwia korzystanie z nowych funkcji dostępnych w specyfikacji JPA 2.1. Aby zmienić istniejące aplikacje w taki sposób, aby korzystały z opcji jpa-2.1 zamiast opcji jpa-2.0 , może być konieczne dostosowanie aplikacji w procesie migracji.
Różnice między jpa-2.0 i jpa-2.1
Należy pamiętać o kilku istotnych różnicach między opcjami jpa-2.0 i jpa-2.1 . Patrz:
- Różnice nazw klas dostawcy persistenceProvider
jpa-2.0- Dostawca IBM® :
com.ibm.websphere.persistence.PersistenceProviderImpl - Dostawca OpenJPA:
org.apache.openjpa.persistence.PersistenceProviderImpl
- Dostawca IBM® :
- Różnice w działaniu buforowania
jpa-2.0: buforowanie jest domyślnie wyłączone. Jeśli aplikacja wymaga skorzystania z pamięci podręcznej L2 , należy ją jawnie włączyć.- Różnice w zakresie wzmocnienia/tkania
jpa-2.0: OpenJPA wymaga, aby jednostki zostały rozszerzone. Więcej informacji na ten temat zawiera sekcja Wzmocnienie jednostek JPA dla standardu JPA 2.0 w dokumentacji produktu.
- Różnice w używaniu źródła danych
Opcja
jpa-2.0oszczędnie korzysta z źródła danych non-jta-datasource, dlatego podczas strojenia aplikacji wymagane są tylko połączenia inne niż jta-datasource.
Funkcje JPA 2.1 dostępne w OpenJPA
Interfejs OpenJPA, dostawca JPA 2.0, posiada funkcje, które działają podobnie do nowych funkcji JPA 2.1. Oznacza to, że jeśli istnieje aplikacja, która korzysta z opcji jpa-2.0 i chce korzystać z niektórych funkcji JPA 2.1, nie trzeba przełączać się do opcji jpa-2.1 . Zamiast tego można użyć odpowiednika nowego składnika udostępnionego przez interfejs OpenJPA. Niektóre z kluczowych funkcji JPA 2.1, które są dostępne w OpenJPA to:
- generowanie schematu
Za pomocą tej funkcji można generować instrukcje DDL lub komunikować się bezpośrednio z bazą danych w celu zdefiniowania schematów tabel w oparciu o definicję jednostki JPA. Więcej informacji na ten temat można znaleźć w sekcji sekcja 9.4 specyfikacji JPA 2.1.
Odpowiednik OpenJPA: Schema Mapper (Program odwzorowujący schemat)
- Wykresy jednostek
Za pomocą tej funkcji można określić pobieranie lub przetwarzanie wykresu obiektów obiektów. Więcej informacji na ten temat można znaleźć w sekcji 3.7 specyfikacji JPA 2.1.
Funkcja równoważna OpenJPA: FetchPlan i FetchGroup
- Zapisane zapytania dotyczące procedury
Za pomocą tej funkcji można wywoływać procedury zapisane w bazach danych. Więcej informacji na ten temat można znaleźć w sekcji sekcja 3.10.17 specyfikacji JPA 2.1.
Odpowiednik OpenJPA: Wywołanie zapytania
- Konwersja podstawowego typu atrybutu
Za pomocą tej funkcji można dokonać konwersji między reprezentacją jednostki atrybutów a reprezentacją bazy danych dla atrybutów typu podstawowego. Więcej informacji na ten temat można znaleźć w sekcji 3.8 specyfikacji JPA 2.1.
Funkcja równoważna OpenJPA: składnik Externalizer
- Adnotacje @Index i @ForeignKey
Zapoznaj się z sekcjami 11.1.19 i 11.1.23 specyfikacji JPA 2.1.
Odpowiednik OpenJPA: OpenJPA @Index i @ForeignKey.
- Odpakowanie metod narzędziowych dla interfejsu EntityManager, pamięci podręcznej
Zapoznaj się z sekcjami 3.1.1 i 7.10 specyfikacji JPA 2.1.
Funkcje równoważne interfejsu OpenJPA: EntityManagerImpl.unwrap () i OpenJPAPersistence.cast ().
- Budowanie obiektów podczas odwzorowywania wyników z rodzimego kodu SQL
Należy zapoznać się z sekcją 3.10.16.2.2 specyfikacji JPA 2.1.
Równoważna funkcja OpenJPA: obiekt ResultShape .