Una guida a EclipseLink con Spring

1. Panoramica

Per impostazione predefinita, Spring Data utilizza Hibernate come provider di implementazione JPA predefinito.

Tuttavia, Hibernate non è certamente l'unica implementazione JPA a nostra disposizione.

In questo articolo, esamineremo i passaggi necessari per configurare EclipseLink come provider di implementazione per Spring Data JPA.

2. Dipendenza da Maven

Per usarlo nella nostra applicazione Spring, dobbiamo solo aggiungere la dipendenza org.eclipse.persistence.jpa nel pom.xml del nostro progetto:

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

Per impostazione predefinita, Spring Data viene fornito con l'implementazione di Hibernate.

Poiché vogliamo utilizzare EclipseLink invece come provider JPA, non ne abbiamo più bisogno.

Quindi possiamo rimuoverlo dal nostro progetto escludendo le sue dipendenze:

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

Il passaggio successivo consiste nel comunicare a Spring Framework che si desidera utilizzare EclipseLink come implementazione JPA.

3. Configurazione della molla

JpaBaseConfiguration è una classe astratta che definisce i bean per JPA in Spring Boot. Per personalizzarlo, dobbiamo implementare alcuni metodi come createJpaVendorAdapter () o getVendorProperties () .

Spring fornisce un'implementazione della configurazione per Hibernate pronta per l'uso chiamata HibernateJpaAutoConfiguration . Tuttavia, per EclipseLink, dobbiamo creare una configurazione personalizzata.

Innanzitutto, dobbiamo implementare il metodo createJpaVendorAdapter () che specifica l'implementazione JPA da utilizzare.

Spring fornisce un'implementazione di AbstractJpaVendorAdapter per EclipseLink chiamato EclipseLinkJpaVendorAdapter che useremo nel nostro metodo:

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

Inoltre, dobbiamo definire alcune proprietà specifiche del fornitore che verranno utilizzate da EclipseLink.

Possiamo aggiungerli tramite il metodo 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 contiene proprietà che possiamo definire per EclipseLink.

In questo esempio, abbiamo specificato che vogliamo utilizzare la tessitura e ricreare lo schema del database quando l'applicazione viene eseguita.

E questo è tutto! Questa è l'intera implementazione necessaria per passare dal provider JPA Hibernate predefinito a EclipseLink.

Tieni presente che Spring Data utilizza l'API JPA e non metodi specifici del fornitore. Quindi, in teoria, non dovrebbero esserci problemi quando si passa da un fornitore a un altro.

4. Conclusione

In questo breve tutorial, abbiamo spiegato come modificare il provider di implementazione JPA predefinito utilizzato da Spring Data.

Abbiamo visto quanto sia semplice e veloce passare da Hibernate, che è l'impostazione predefinita, a EclipseLink.

Come sempre, l'implementazione completa degli esempi è disponibile su Github.