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 .