Eine Anleitung zu EclipseLink mit Spring

1. Übersicht

Standardmäßig verwendet Spring Data Hibernate als Standardanbieter für die JPA-Implementierung.

Hibernate ist jedoch sicherlich nicht die einzige JPA-Implementierung, die uns zur Verfügung steht.

In diesem Artikel werden die Schritte beschrieben, die zum Einrichten von EclipseLink als Implementierungsanbieter für Spring Data JPA erforderlich sind .

2. Maven-Abhängigkeit

Um es in unserer Spring-Anwendung zu verwenden, müssen wir nur die Abhängigkeit org.eclipse.persistence.jpa in die pom.xml unseres Projekts einfügen :

 org.eclipse.persistence org.eclipse.persistence.jpa 2.7.0 

Standardmäßig wird Spring Data mit der Hibernate-Implementierung geliefert.

Da wir stattdessen EclipseLink als JPA-Anbieter verwenden möchten, benötigen wir es nicht mehr.

Daher können wir es aus unserem Projekt entfernen, indem wir seine Abhängigkeiten ausschließen:

 org.springframework.boot spring-boot-starter-data-jpa   org.hibernate hibernate-entitymanager   org.hibernate hibernate-core   

Der nächste Schritt besteht darin, dem Spring Framework mitzuteilen, dass EclipseLink als JPA-Implementierung verwendet werden soll.

3. Federkonfiguration

JpaBaseConfiguration ist eine abstrakte Klasse, die Beans für JPA in Spring Boot definiert. Um es anzupassen, müssen wir einige Methoden wie createJpaVendorAdapter () oder getVendorProperties () implementieren .

Spring bietet eine sofort einsatzbereite Konfigurationsimplementierung für Hibernate mit dem Namen HibernateJpaAutoConfiguration . Für EclipseLink müssen wir jedoch eine benutzerdefinierte Konfiguration erstellen.

Zunächst müssen wir die Methode createJpaVendorAdapter () implementieren, die die zu verwendende JPA-Implementierung angibt.

Spring bietet eine Implementierung des AbstractJpaVendorAdapter für EclipseLink mit dem Namen EclipseLinkJpaVendorAdapter , die wir in unserer Methode verwenden werden:

@Configuration public class EclipseLinkJpaConfiguration extends JpaBaseConfiguration { @Override protected AbstractJpaVendorAdapter createJpaVendorAdapter() { return new EclipseLinkJpaVendorAdapter(); } //... }

Außerdem müssen wir einige herstellerspezifische Eigenschaften definieren , die von EclipseLink verwendet werden.

Wir können diese über die Methode getVendorProperties () hinzufügen :

@Override protected Map getVendorProperties() { HashMap map = new HashMap(); map.put(PersistenceUnitProperties.WEAVING, true); map.put(PersistenceUnitProperties.DDL_GENERATION, "drop-and-create-tables"); return map; }

Die Klasse org.eclipse.persistence.config.PersistenceUnitProperties enthält Eigenschaften, die wir für EclipseLink definieren können .

In diesem Beispiel haben wir angegeben, dass wir das Weben verwenden und das Datenbankschema neu erstellen möchten, wenn die Anwendung ausgeführt wird.

Und das ist es! Dies ist die gesamte Implementierung, die erforderlich ist, um vom Standard-JPA-Anbieter für den Ruhezustand zu EclipseLink zu wechseln .

Beachten Sie, dass Spring Data die JPA-API und keine herstellerspezifischen Methoden verwendet. Theoretisch sollte es also kein Problem geben, von einem Anbieter zu einem anderen zu wechseln.

4. Fazit

In diesem kurzen Tutorial wurde erläutert, wie Sie den von Spring Data verwendeten Standard-JPA-Implementierungsanbieter ändern.

Wir haben gesehen, wie schnell und einfach der Wechsel von Hibernate, der Standardeinstellung, zu EclipseLink ist.

Wie immer ist die vollständige Implementierung der Beispiele auf Github verfügbar.