SpringBootを使用したHibernateフィールドの命名
1. 序章
この簡単なチュートリアルでは、Spring BootアプリケーションでHibernateネーミング戦略を使用する方法を説明します。
2. Mavenの依存関係
MavenベースのSpringBootアプリケーションから始めて、Spring Dataを喜んで受け入れる場合は、SpringDataJPA依存関係を追加するだけです。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
また、データベースが必要なので、インメモリデータベースH2を使用します。
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
Spring Data JPA依存関係は、Hibernate依存関係をもたらします。
3. 春のブート命名戦略
そして、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エンティティはaddress_bookテーブルとして作成されます。
4. 実行中の戦略
アカウントエンティティを作成する場合:
@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
または、それらを@Beanとして公開します。
@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のクエリジェネレーターに命名戦略を適用する方法と、それらの戦略をカスタマイズする方法も確認しました。
そして、いつものように、GitHubでこれらすべてのサンプルを確認してください。