SpringとEclipseLinkのガイド

1. 概要

デフォルトでは、Spring DataはデフォルトのJPA実装プロバイダーとしてHibernateを使用します。

ただし、使用可能なJPA実装はHibernateだけではありません。

この記事では、Spring Data JPAの実装プロバイダーとしてEclipseLinkを設定するために必要な手順を説明します。

2. メーベン依存

Springアプリケーションで使用するには、プロジェクトのpom.xmlorg.eclipse.persistence.jpa依存関係を追加する必要があります。


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

デフォルトでは、SpringDataにはHibernateの実装が付属しています。

代わりにEclipseLinkをJPAプロバイダーとして使用したいので、もう必要ありません。

したがって、依存関係を除外することでプロジェクトから削除できます。


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

次のステップは、JPA実装としてEclipseLinkを使用することをSpringFrameworkに通知することです。

3. スプリング構成

Spring BootのJpaBaseConfiguration is an abstract class which defines beans for JPA。 カスタマイズするには、createJpaVendorAdapter()getVendorProperties()などのメソッドを実装する必要があります。

Springは、HibernateJpaAutoConfigurationと呼ばれるHibernateの構成実装をすぐに提供します。 ただし、EclipseLink,の場合は、カスタム構成を作成する必要があります。

まず、使用するJPA実装を指定するcreateJpaVendorAdapter()メソッドを実装する必要があります。

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!これは、デフォルトのHibernate JPAプロバイダーからEclipseLink.に変更するために必要な実装全体です。

Spring Dataはベンダー固有のメソッドではなくJPA APIを使用することに注意してください。 そのため、理論的には、あるベンダーから別のベンダーに切り替えても問題はないはずです。

4. 結論

このクイックチュートリアルでは、Spring Dataで使用されるデフォルトのJPA実装プロバイダーを変更する方法について説明しました。

デフォルトのHibernateからEclipseLink.に変更するのがいかに迅速で簡単かを見ました

いつものように、例の完全な実装はover on Githubで利用できます。