Перейти к основному содержимому

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

· 3 мин. чтения

1. Обзор

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

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

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

2. Зависимость от Maven

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

<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>org.eclipse.persistence.jpa</artifactId>
<version>2.7.0</version>
</dependency>

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

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

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

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<exclusions>
<exclusion>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
</exclusion>
<exclusion>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
</exclusion>
</exclusions>
</dependency>

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

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

JpaBaseConfiguration — это абстрактный класс, который определяет bean-компоненты для JPA в Spring Boot. Чтобы настроить его, мы должны реализовать некоторые методы, такие как createJpaVendorAdapter() или getVendorProperties() .

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

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

Spring предоставляет реализацию AbstractJpaVendorAdapter для EclipseLink с именем EclipseLinkJpaVendorAdapter , которую мы собираемся использовать в нашем методе:

@Configuration 
public class EclipseLinkJpaConfiguration extends JpaBaseConfiguration {

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

//...
}

Кроме того, мы должны определить некоторые специфичные для производителя свойства, которые будут использоваться EclipseLink.

Мы можем добавить их с помощью метода getVendorProperties() :

@Override
protected Map<String, Object> getVendorProperties() {
HashMap<String, Object> 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.

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

Вот и все! Это вся реализация, необходимая для перехода от поставщика Hibernate JPA по умолчанию к EclipseLink.

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

4. Вывод

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

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

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