SpringとEclipseLinkのガイド
1概要
デフォルトでは、Spring DataはデフォルトのJPA実装プロバイダとしてHibernateを使用します。
しかしながら、Hibernateは確かに私たちが利用できる唯一のJPA実装ではありません。
この記事では、http://www.eclipse.org/eclipselink/[
EclipseLink
]をSpring Data JPAの実装プロバイダーとして設定するために必要な手順を説明します。
2 Mavenの依存関係
Springアプリケーションでそれを使用するには、https://search.maven.org/classic/#search%7Cga%7C1%7Ca%3A%22org.eclipse.persistence.jpa%22[
org.eclipseを追加するだけです。プロジェクトの
pom.xml
内の.persistence.jpa
]依存関係:
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>org.eclipse.persistence.jpa</artifactId>
<version>2.7.0</version>
</dependency>
デフォルトでは、Spring DataはHibernateの実装が付属しています。
JPAプロバイダとして
EclipseLink
を代わりに使用したいので、もう必要ありません。
したがって、その依存関係を除外することで、プロジェクトから削除できます。
<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>
次のステップはJPAの実装として
EclipseLink
を使いたいことをSpring Frameworkに伝えることです。
3スプリング構成
-
JpaBaseConfiguration
は、Spring BootでJPA ** 用のBeanを定義する抽象クラスです。カスタマイズするには、
createJpaVendorAdapter()
や
getVendorProperties()
などのメソッドをいくつか実装する必要があります。
SpringはHibernateに
HibernateJpaAutoConfiguration
と呼ばれる設定なしで設定実装を提供します。ただし、
EclipseLinkでは、
カスタム構成を作成する必要があります。
まず、使用するJPA実装を指定する
createJpaVendorAdapter()
メソッドを実装する必要があります。
Springは
EclipseLink
のために
EclipseLinkJpaVendorAdapter
** と呼ばれる
AbstractJpaVendorAdapter
の実装を提供しています。これをこのメソッドで使用します。
@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はJPA APIを使用しており、ベンダー固有のメソッドは使用していません。したがって、理論的には、あるベンダから別のベンダに切り替えても問題はありません。
4結論
このクイックチュートリアルでは、Spring Dataが使用するデフォルトのJPA実装プロバイダを変更する方法について説明しました。
デフォルトであるHibernateから__EclipseLinkに変更するのがどれほど迅速で簡単かを見ました。
いつものように、例の完全な実装はhttps://github.com/eugenp/tutorials/tree/master/persistence-modules/spring-data-eclipselink[over Github]で利用可能です。