Перейти к основному содержимому

Именование полей Hibernate с помощью Spring Boot

· 3 мин. чтения

1. Введение

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

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

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

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

Если мы создадим объект 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.

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

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, а также увидели, как настраивать эти стратегии.

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