Nomeação de campo de hibernação com inicialização por mola

Nomeação de campo de hibernação com inicialização por mola

1. Introdução

Neste breve tutorial, veremos como usarHibernate naming strategies em um aplicativoSpring Boot.

2. Dependências do Maven

Se começarmos com umMaven-based Spring Boot application e ficarmos felizes em adotar o Spring Data, então precisamos apenas adicionar a dependência JPA do Spring Data:


    org.springframework.boot
    spring-boot-starter-data-jpa

Além disso, precisamos de um banco de dados, então usaremos oin-memory database H2:


    com.h2database
    h2
    runtime

A dependência do Spring Data JPA traz as dependências do Hibernate para nós.

3. Spring Boot Naming Strategies

Hibernate maps field names using a physical strategy and an implicit strategy. Falamos anteriormente sobre como trabalhar com as estratégias de nomenclatura nestetutorial.

E, Spring Boot, fornece padrões para ambos:

  • spring.jpa.hibernate.naming.physical-strategy padroniza paraorg.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy, e

  • spring.jpa.hibernate.naming.implicit-strategy  padroniza paraorg.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy

Podemos substituir esses valores, mas, por padrão, eles irão:

  • Substitua pontos por sublinhados

  • Mude o estojo de camelo para estojo de cobra e

  • Nomes de tabela em minúsculas

Assim, por exemplo, umAddressBook entity seria criado como oaddress_book estável.

4. Estratégias em Ação

Se criarmos uma entidadeAccount:

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

E, em seguida, ative alguma depuração SQL em nosso arquivo de propriedades:

hibernate.show_sql: true

Na inicialização, veremos a seguinte declaraçãocreate em nossos registros:

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

Como podemos ver, os campos usam estojo de cobra e são minúsculos, seguindo as convenções da primavera.

E lembre-se de que não precisamos especificar as propriedadesphysical-strategy ouimplicit-strategy neste caso, uma vez que estamos aceitando os padrões.

5. Customizando Estratégias

Então, digamos que queremos usar as estratégias do JPA 1.0.

Só precisamos indicá-lo em nosso arquivo de propriedades:

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

Ou exponha-os como@Beans:

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

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

De qualquer forma, se executarmos nosso exemplo com essas mudanças, veremos uma instrução DDL ligeiramente diferente:

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

Como podemos ver, desta vez, essas estratégias seguem a convenção de nomenclatura do JPA 1.0.

Agora, se quisermos usar as regras de nomenclatura JPA 2.0, precisaríamos definirImplicitNamingStrategyJpaCompliantImpl como nossa estratégia implícita.

6. Conclusão

Neste tutorial, vimos como Spring Boot aplica estratégias de nomenclatura ao gerador de consulta do Hibernate e também vimos como personalizar essas estratégias.

E, como sempre, certifique-se de verificar todas essas amostrasover on GitHub.