1. Gambaran keseluruhan
Secara lalai, Spring Data menggunakan Hibernate sebagai penyedia pelaksanaan JPA lalai.
Namun, Hibernate bukanlah satu-satunya pelaksanaan JPA yang tersedia untuk kita.
Dalam artikel ini, kami akan melalui langkah-langkah yang diperlukan untuk menyediakan EclipseLink sebagai penyedia pelaksanaan Spring Data JPA.
2. Ketergantungan Maven
Untuk menggunakannya dalam aplikasi Spring kami, kami hanya perlu menambahkan kebergantungan org.eclipse.persistence.jpa dalam pom.xml projek kami:
org.eclipse.persistence org.eclipse.persistence.jpa 2.7.0
Secara lalai, Spring Data disertakan dengan pelaksanaan Hibernate.
Oleh kerana kami mahu menggunakan EclipseLink sebagai penyedia JPA, kami tidak memerlukannya lagi.
Oleh itu, kita boleh mengeluarkannya dari projek kita dengan tidak termasuk pergantungannya:
org.springframework.boot spring-boot-starter-data-jpa org.hibernate hibernate-entitymanager org.hibernate hibernate-core
Langkah seterusnya adalah memberitahu Spring Framework bahawa kita ingin menggunakan EclipseLink sebagai pelaksanaan JPA.
3. Konfigurasi Musim Bunga
JpaBaseConfiguration adalah kelas abstrak yang menentukan kacang untuk JPA di Spring Boot. Untuk menyesuaikannya, kita harus menerapkan beberapa kaedah seperti createJpaVendorAdapter () atau getVendorProperties () .
Spring menyediakan pelaksanaan konfigurasi untuk Hibernate di luar kotak yang disebut HibernateJpaAutoConfiguration . Namun, untuk EclipseLink, kita harus membuat konfigurasi tersuai.
Pertama, kita perlu melaksanakan kaedah createJpaVendorAdapter () yang menentukan pelaksanaan JPA yang akan digunakan.
Spring menyediakan pelaksanaan AbstractJpaVendorAdapter untuk EclipseLink yang dipanggil EclipseLinkJpaVendorAdapter yang akan kami gunakan dalam kaedah kami:
@Configuration public class EclipseLinkJpaConfiguration extends JpaBaseConfiguration { @Override protected AbstractJpaVendorAdapter createJpaVendorAdapter() { return new EclipseLinkJpaVendorAdapter(); } //... }
Kita juga harus menentukan beberapa sifat khusus vendor yang akan digunakan oleh EclipseLink.
Kita boleh menambahkannya melalui kaedah 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; }
Kelas org.eclipse.persistence.config.PersistenceUnitProperties mengandungi sifat yang boleh kita tentukan untuk EclipseLink.
Dalam contoh ini, kami telah menetapkan bahawa kami ingin menggunakan tenun dan membuat semula skema pangkalan data ketika aplikasi berjalan.
Dan itu sahaja! Ini adalah keseluruhan pelaksanaan yang diperlukan untuk menukar dari penyedia JPA Hibernate lalai ke EclipseLink.
Perhatikan bahawa Spring Data menggunakan JPA API dan bukan kaedah khusus vendor. Jadi, secara teori, seharusnya tidak ada masalah ketika beralih dari satu vendor ke vendor yang lain.
4. Kesimpulan
Dalam tutorial ringkas ini, kami membahas bagaimana mengubah penyedia pelaksanaan JPA lalai yang digunakan oleh Spring Data.
Kami melihat betapa cepat dan mudahnya menukar dari Hibernate yang merupakan lalai ke EclipseLink.
Seperti biasa, pelaksanaan contoh lengkap tersedia di Github.