Un guide pour 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 de JPA disponible.

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

2. Dépendance Maven

Pour l'utiliser dans notre application Spring, il suffit d'ajouter la dépendanceorg.eclipse.persistence.jpa dans lespom.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 utiliserEclipseLink à la place comme fournisseur JPA, nous n'en avons plus besoin.

Par conséquent, nous pouvons 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 utiliserEclipseLink comme implémentation JPA.

3. Configuration du ressort

JpaBaseConfiguration is an abstract class which defines beans for JPA dans Spring Boot. Pour le personnaliser, nous devons implémenter certaines méthodes commecreateJpaVendorAdapter() ougetVendorProperties().

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

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

Spring fournit unimplementation of the AbstractJpaVendorAdapter for EclipseLink called EclipseLinkJpaVendorAdapter que nous allons utiliser dans notre méthode:

@Configuration
public class EclipseLinkJpaConfiguration extends JpaBaseConfiguration {

    @Override
    protected AbstractJpaVendorAdapter createJpaVendorAdapter() {
        return new EclipseLinkJpaVendorAdapter();
    }

    //...
}

Aussi, nous devons définir quelquesvendor-specific properties which will be used by EclipseLink.

Nous pouvons les ajouter via la méthodegetVendorProperties():

@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 classeorg.eclipse.persistence.config.PersistenceUnitProperties contient des propriétés que nous pouvons définir pourEclipseLink.

Dans cet exemple, nous avons indiqué que nous souhaitons utiliser le tissage et recréer le schéma de base de données lors de l'exécution de l'application.

And that’s it! Il s'agit de l'ensemble de l'implémentation nécessaire pour passer du fournisseur Hibernate JPA par défaut àEclipseLink.

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

4. Conclusion

Dans ce rapide tutoriel, 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 disponibleover on Github.