Um guia para EclipseLink com Spring

1. Visão geral

Por padrão, o Spring Data usa o Hibernate como o provedor de implementação JPA padrão.

No entanto, o Hibernate certamente não é a única implementação JPA disponível para nós.

Neste artigo, passaremos pelas etapas necessárias para configurarEclipseLink como o provedor de implementação do Spring Data JPA.

2. Dependência do Maven

Para usá-lo em nosso aplicativo Spring, precisamos apenas adicionar a dependênciaorg.eclipse.persistence.jpa empom.xml do nosso projeto:


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

Por padrão, Spring Data vem com a implementação do Hibernate.

Como queremos usarEclipseLink como o provedor JPA, não precisamos mais dele.

Portanto, podemos removê-lo de nosso projeto excluindo suas dependências:


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

A próxima etapa é informar ao Spring Framework que queremos usarEclipseLink como a implementação JPA.

3. Configuração da mola

JpaBaseConfiguration is an abstract class which defines beans for JPA no Spring Boot. Para personalizá-lo, temos que implementar alguns métodos comocreateJpaVendorAdapter() ougetVendorProperties().

O Spring fornece uma implementação de configuração para o Hibernate pronta para uso, chamadaHibernateJpaAutoConfiguration. No entanto, paraEclipseLink,, temos que criar uma configuração personalizada.

Primeiro, precisamos implementar o métodocreateJpaVendorAdapter(), que especifica a implementação JPA a ser usada.

Spring fornece umimplementation of the AbstractJpaVendorAdapter for EclipseLink called EclipseLinkJpaVendorAdapter que usaremos em nosso método:

@Configuration
public class EclipseLinkJpaConfiguration extends JpaBaseConfiguration {

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

    //...
}

Além disso, temos que definir algunsvendor-specific properties which will be used by EclipseLink.

Podemos adicioná-los por meio do métodogetVendorProperties():

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

A classeorg.eclipse.persistence.config.PersistenceUnitProperties contém propriedades que podemos definir paraEclipseLink.

Neste exemplo, especificamos que queremos usar a combinação e recriar o esquema do banco de dados quando o aplicativo é executado.

And that’s it! Esta é toda a implementação necessária para mudar do provedor Hibernate JPA padrão paraEclipseLink.

Observe que o Spring Data usa a API JPA e não nenhum método específico do fornecedor. Portanto, em teoria, não deve haver problema ao alternar de um fornecedor para outro.

4. Conclusão

Neste tutorial rápido, abordamos como alterar o provedor de implementação JPA padrão usado pelo Spring Data.

Vimos como é rápido e simples mudar do Hibernate, que é o padrão paraEclipseLink.

Como sempre, a implementação completa dos exemplos está disponívelover on Github.