Spring Bootを使用したHibernateフィールドの命名
1. 前書き
この簡単なチュートリアルでは、Spring BootアプリケーションでHibernate naming strategiesを使用する方法を説明します。
2. Mavenの依存関係
Maven-based Spring Boot applicationで始まり、Spring Dataを受け入れて満足している場合は、Spring DataJPA依存関係を追加するだけです。
org.springframework.boot
spring-boot-starter-data-jpa
また、データベースが必要なので、in-memory database H2を使用します。
com.h2database
h2
runtime
Spring Data JPA依存関係は、Hibernate依存関係をもたらします。
3. SpringBootの命名戦略
Hibernate maps field names using a physical strategy and an implicit strategy. 以前、このtutorialで命名戦略を操作する方法について説明しました。
また、Spring Bootは、両方のデフォルトを提供します。
-
spring.jpa.hibernate.naming.physical-strategyのデフォルトはorg.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategyで、
-
spring.jpa.hibernate.naming.implicit-strategy のデフォルトはorg.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy
これらの値はオーバーライドできますが、デフォルトでは次のようになります。
-
ドットをアンダースコアに置き換えます
-
キャメルケースをスネークケースに変更し、
-
小文字のテーブル名
したがって、たとえば、AddressBook entityはaddress_book tableとして作成されます。
4. 実行中の戦略
Accountエンティティを作成する場合:
@Entity
public class Account {
@Id
private Long id;
private String defaultEmail;
}
そして、プロパティファイルでいくつかのSQLデバッグをオンにします。
hibernate.show_sql: true
起動時に、ログに次のcreateステートメントが表示されます。
Hibernate: create table account (id bigint not null, default_email varchar(255))
ご覧のとおり、フィールドはスネークケースを使用しており、Springの規則に従って小文字になっています。
また、この場合はデフォルトを受け入れているため、physical-strategyまたはimplicit-strategy プロパティを指定する必要がないことに注意してください。
5. 戦略のカスタマイズ
したがって、JPA1.0の戦略を使用するとします。
プロパティファイルで指定するだけです。
spring:
jpa:
hibernate:
naming:
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
implicit-strategy: org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl
または、それらを@Beansとして公開します。
@Bean
public PhysicalNamingStrategy physical() {
return new PhysicalNamingStrategyStandardImpl();
}
@Bean
public ImplicitNamingStrategy implicit() {
return new ImplicitNamingStrategyLegacyJpaImpl();
}
いずれにせよ、これらの変更を加えて例を実行すると、わずかに異なるDDLステートメントが表示されます。
Hibernate: create table Account (id bigint not null, defaultEmail varchar(255), primary key (id))
ご覧のとおり、今回の戦略はJPA1.0の命名規則に従います。
ここで、JPA 2.0の命名規則を使用する場合は、暗黙の戦略としてImplicitNamingStrategyJpaCompliantImplを設定する必要があります。
6. 結論
このチュートリアルでは、Spring Bootが命名戦略をHibernateのクエリジェネレーターに適用する方法と、それらの戦略をカスタマイズする方法についても説明しました。
そして、いつものように、これらすべてのサンプルover on GitHubを確認してください。