Ръководство за EclipseLink с пролетта

1. Общ преглед

По подразбиране Spring Data използва Hibernate като доставчик по внедряване на JPA по подразбиране.

Въпреки това Hibernate със сигурност не е единственото внедряване на JPA, достъпно за нас.

В тази статия ще преминем през стъпки, необходими за настройване на EclipseLink като доставчик на внедряване за Spring Data JPA.

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

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

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

По подразбиране Spring Data се доставя с хибернация.

Тъй като вместо това искаме да използваме EclipseLink като доставчик на JPA, вече не се нуждаем от него.

Следователно можем да го премахнем от нашия проект, като изключим неговите зависимости:

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

Следващата стъпка е да кажем на Spring Framework, че искаме да използваме EclipseLink като реализация на JPA.

3. Пролетна конфигурация

JpaBaseConfiguration е абстрактен клас, който дефинира боб за 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 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.

В този пример посочихме, че искаме да използваме тъкане и да създадем отново схемата на базата данни, когато приложението се изпълнява.

И това е! Това е цялата реализация, необходима за промяна от стандартния доставчик на Hibernate JPA към EclipseLink.

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

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

В този бърз урок разгледахме как да променим доставчика на JPA по подразбиране, използван от Spring Data.

Видяхме колко бърза и лесна е промяната от хибернация, която е по подразбиране към EclipseLink.

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