Un guide sur EclipseLink avec Spring

1. Vue d'ensemble

Par défaut, Spring Data utilise Hibernate comme fournisseur d'implémentation JPA par défaut.

Cependant, Hibernate n'est certainement pas la seule implémentation JPA à notre disposition.

Dans cet article, nous allons passer par les étapes nécessaires pour configurer EclipseLink en tant que fournisseur d'implémentation pour Spring Data JPA.

2. Dépendance de Maven

Pour l'utiliser dans notre application Spring, il suffit d'ajouter la dépendance org.eclipse.persistence.jpa dans le pom.xml de notre projet:

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

Par défaut, Spring Data est fourni avec l'implémentation Hibernate.

Puisque nous voulons utiliser EclipseLink à la place en tant que fournisseur JPA, nous n'en avons plus besoin.

Nous pouvons donc le supprimer de notre projet en excluant ses dépendances:

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

L'étape suivante consiste à indiquer au Spring Framework que nous voulons utiliser EclipseLink comme implémentation JPA.

3. Configuration du ressort

JpaBaseConfiguration est une classe abstraite qui définit les beans pour JPA dans Spring Boot. Pour le personnaliser, nous devons implémenter certaines méthodes comme createJpaVendorAdapter () ou getVendorProperties () .

Spring fournit une implémentation de configuration pour Hibernate prête à l'emploi appelée HibernateJpaAutoConfiguration . Cependant, pour EclipseLink, nous devons créer une configuration personnalisée.

Tout d'abord, nous devons implémenter la méthode createJpaVendorAdapter () qui spécifie l'implémentation JPA à utiliser.

Spring fournit une implémentation de AbstractJpaVendorAdapter pour EclipseLink appelée EclipseLinkJpaVendorAdapter que nous allons utiliser dans notre méthode:

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

De plus, nous devons définir certaines propriétés spécifiques au fournisseur qui seront utilisées par EclipseLink.

Nous pouvons les ajouter via la méthode getVendorProperties () :

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

La classe org.eclipse.persistence.config.PersistenceUnitProperties contient des propriétés que nous pouvons définir pour EclipseLink.

Dans cet exemple, nous avons spécifié que nous souhaitons utiliser le tissage et recréer le schéma de base de données lorsque l'application s'exécute.

Et c'est tout! Il s'agit de toute l'implémentation nécessaire pour passer du fournisseur JPA Hibernate par défaut à EclipseLink.

Notez que Spring Data utilise l'API JPA et non des méthodes spécifiques au fournisseur. Donc, en théorie, il ne devrait y avoir aucun problème lors du passage d'un fournisseur à un autre.

4. Conclusion

Dans ce tutoriel rapide, nous avons expliqué comment modifier le fournisseur d'implémentation JPA par défaut utilisé par Spring Data.

Nous avons vu à quel point il est simple et rapide de passer d'Hibernate qui est la valeur par défaut à EclipseLink.

Comme toujours, l'implémentation complète des exemples est disponible à l'adresse over sur Github.