«1. Введение

В этом кратком руководстве мы увидим, как использовать стратегии именования Hibernate в приложении Spring Boot.

2. Зависимости Maven

Если мы начнем с приложения Spring Boot на основе Maven и будем рады использовать Spring Data, нам просто нужно добавить JPA-зависимость Spring Data:

<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

Hibernate отображает имена полей, используя физическую стратегию и неявную стратегию. Ранее в этом уроке мы говорили о том, как работать со стратегиями именования.

И 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. Стратегии в действии

Если мы создадим сущность Пользователя:

А затем включим отладку SQL в нашем файле свойств:

@Entity
public class Account {
    @Id 
    private Long id;
    private String defaultEmail;
}

При запуске мы увидим следующий оператор create в наших логах:

hibernate.show_sql: true

Как мы видим, в полях используется змеиный регистр и строчные буквы, следуя соглашениям Spring.

Hibernate: create table account (id bigint not null, default_email varchar(255))

И помните, что в этом случае нам не нужно указывать свойства физической стратегии или неявной стратегии, поскольку мы принимаем значения по умолчанию.

5. Настройка стратегий

Итак, допустим, мы хотим использовать стратегии из JPA 1.0.

Нам нужно только указать это в нашем файле свойств:

Или представить их как @Beans:

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

В любом случае, если мы запустим наш пример с этими изменениями, мы увидим немного другой оператор DDL:

@Bean
public PhysicalNamingStrategy physical() {
    return new PhysicalNamingStrategyStandardImpl();
}

@Bean
public ImplicitNamingStrategy implicit() {
    return new ImplicitNamingStrategyLegacyJpaImpl();
}

Как мы видим, на этот раз эти стратегии следуют соглашению об именах JPA 1.0.

Hibernate: create table Account (id bigint not null, defaultEmail varchar(255), primary key (id))

Теперь, если мы хотим использовать правила именования JPA 2.0, нам нужно установить ImplicitNamingStrategyJpaCompliantImpl в качестве нашей неявной стратегии.

6. Заключение

В этом руководстве мы увидели, как Spring Boot применяет стратегии именования к генератору запросов Hibernate, а также увидели, как настраивать эти стратегии.

И, как всегда, обязательно ознакомьтесь со всеми этими примерами на GitHub.

«