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 .