Руководство по EclipseLink с Spring

1. обзор

По умолчанию Spring Data использует Hibernate в качестве поставщика реализации JPA по умолчанию.

Однако Hibernate, конечно, не единственная реализация JPA, доступная для нас.

В этой статье мы рассмотрим шаги, необходимые для настройкиEclipseLink в качестве поставщика реализации для Spring Data JPA.

2. Maven Dependency

Чтобы использовать его в нашем приложении Spring, нам просто нужно добавить зависимостьorg.eclipse.persistence.jpa вpom.xml нашего проекта:


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

По умолчанию Spring Data поставляется с реализацией Hibernate.

Поскольку мы хотим использоватьEclipseLink в качестве провайдера JPA, он нам больше не нужен.

Поэтому мы можем удалить его из нашего проекта, исключив его зависимости:


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

Следующий шаг - сообщить Spring Framework, что мы хотим использоватьEclipseLink в качестве реализации JPA.

3. Конфигурация пружины

JpaBaseConfiguration is an abstract class which defines beans for JPA в Spring Boot. Чтобы настроить его, мы должны реализовать некоторые методы, такие какcreateJpaVendorAdapter() илиgetVendorProperties().

Spring предоставляет реализацию конфигурации для Hibernate из коробки под названиемHibernateJpaAutoConfiguration. Однако дляEclipseLink, мы должны создать собственную конфигурацию.

Во-первых, нам нужно реализовать методcreateJpaVendorAdapter(), который определяет используемую реализацию JPA.

Spring предоставляетimplementation of the AbstractJpaVendorAdapter for EclipseLink called EclipseLinkJpaVendorAdapter, которые мы собираемся использовать в нашем методе:

@Configuration
public class EclipseLinkJpaConfiguration extends JpaBaseConfiguration {

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

    //...
}

Кроме того, мы должны определить несколькоvendor-specific properties which will be used by EclipseLink.

Мы можем добавить их с помощью метода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;
}

Классorg.eclipse.persistence.config.PersistenceUnitProperties содержит свойства, которые мы можем определить дляEclipseLink.

В этом примере мы указали, что хотим использовать переплетение и воссоздавать схему базы данных при запуске приложения.

And that’s it! Это вся реализация, необходимая для перехода с провайдера JPA Hibernate по умолчанию наEclipseLink.

Обратите внимание, что Spring Data использует JPA API, а не какие-либо специфичные для поставщика методы. Таким образом, в теории не должно быть никаких проблем при переключении с одного поставщика на другого.

4. Заключение

В этом кратком руководстве мы рассмотрели, как изменить поставщик реализации JPA по умолчанию, используемый Spring Data.

Мы увидели, насколько быстро и просто перейти с Hibernate, который по умолчанию используется, наEclipseLink..

Как всегда доступна полная реализация примеровover on Github.