1. введение
В этом кратком руководстве мы рассмотрим, как использовать стратегии именования Hibernate в приложении Spring Boot.
2. Зависимости Maven
Если мы начнем с приложения Spring Boot на основе Maven и будем рады принять данные Spring , нам просто нужно добавить зависимость Spring Data JPA:
org.springframework.boot spring-boot-starter-data-jpa
Кроме того, нам нужна база данных, поэтому мы будем использовать базу данных в памяти H2 :
com.h2database h2 runtime
Зависимость 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. Стратегии в действии
Если мы создадим Учетную запись сущность:
@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 .