1前書き

この簡単なチュートリアルでは、https://www.baeldung.com/spring-boot[Springでhttps://www.baeldung.com/hibernate-naming-strategy[休止状態の命名方法]を使用する方法について説明します。起動]アプリケーション。


2 Mavenの依存関係


MavenベースのSpring Bootアプリケーション

から始めて、Spring Dataを受け入れたいのであれば、Spring Data JPA依存関係を追加する必要があります。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

また、データベースが必要なので、https://search.maven.org/search?q=g:com.h2database%20AND%20a:h2[インメモリデータベースH2]を使用します。

<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <scope>runtime</scope>
</dependency>

Spring Data JPAの依存関係はHibernateの依存関係をもたらしてくれます。


3 Spring Bootの命名戦略


  • Hibernateは


    _物理戦略




    暗黙戦略を使用してフィールド名をマッピングします。 _


    ** 以前、このhttps://www.baeldung.com/hibernate-naming-strategy[チュートリアル]で命名方法を使用する方法について説明しました。

そして、Spring Bootは両方のデフォルトを提供します。


  • spring.jpa.hibernate.naming.physical-strategy

    デフォルト


org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy

には、
そして
**

__spring.jpa.hibernate.naming.implicit-strategy

__defaults


org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy

これらの値をオーバーライドできますが、デフォルトでは次のようになります。

  • ドットをアンダースコアに置き換えます

  • キャメルケースをスネークケースに変更し、

  • 小文字のテーブル名

したがって、たとえば、

__ AddressBook


エンティティは、


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カスタマイズ戦略

それで、JPA 1.0の戦略を使いたいとしましょう。

プロパティファイルにそれを指定するだけです。

spring:
  jpa:
    hibernate:
      naming:
        physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
        implicit-strategy: org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl

あるいは、それらを

__ @ Bean

__sとして公開します。

@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))

ご覧のとおり、今回の戦略はJPA 1.0の命名規則に従っています。

  • JPA 2.0の命名規則を使いたい場合は、暗黙的戦略として

    ImplicitNamingStrategyJpaCompliantImpl

    を設定する必要があります。


6. 結論

このチュートリアルでは、Spring BootがHibernateのクエリジェネレータに命名方法をどのように適用するのか、またそれらの方法をカスタマイズする方法を説明しました。

そしていつものように、これらすべてのサンプルを必ずチェックしてくださいhttps://github.com/eugenp/tutorials/tree/master/persistence-modules/spring-boot-persistence[GitHubで動く]。