Hibernate Field Naming mit Spring Boot

Benennung des Ruhezustandsfelds mit Spring Boot

1. Einführung

In diesem kurzen Tutorial erfahren Sie, wie SieHibernate naming strategies in einerSpring Boot-Anwendung verwenden.

2. Maven-Abhängigkeiten

Wenn wir mit einemMaven-based Spring Boot application beginnen und Spring Data gerne annehmen, müssen wir nur die Spring Data JPA-Abhängigkeit hinzufügen:


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

Außerdem benötigen wir eine Datenbank, daher verwenden wirin-memory database H2:


    com.h2database
    h2
    runtime

Die JPA-Abhängigkeit von Spring Data führt zu den Ruhezustandsabhängigkeiten für uns.

3. Spring Boot-Benennungsstrategien

Hibernate maps field names using a physical strategy and an implicit strategy. Wir haben zuvor darüber gesprochen, wie man mit den Namensstrategien in diesemtutorial arbeitet.

Und Spring Boot bietet Standardeinstellungen für beide:

  • spring.jpa.hibernate.naming.physical-strategy ist standardmäßigorg.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy und

  • spring.jpa.hibernate.naming.implicit-strategy  ist standardmäßigorg.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy

Wir können diese Werte überschreiben, aber standardmäßig werden diese:

  • Ersetzen Sie Punkte durch Unterstriche

  • Ändern Sie die Kamelhülle in die Schlangenhülle und

  • Tabellennamen in Kleinbuchstaben

So würde beispielsweise eineAddressBook -Sentität alsaddress_book -Stabil erstellt.

4. Strategien in Aktion

Wenn wir eineAccount-Entität erstellen:

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

Aktivieren Sie anschließend das SQL-Debugging in unserer Eigenschaftendatei:

hibernate.show_sql: true

Beim Start wird die folgendecreate-Anweisung in unseren Protokollen angezeigt:

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

Wie wir sehen können, verwenden die Felder die Groß- und Kleinschreibung und folgen den Frühlingskonventionen.

Und denken Sie daran, dass wir in diesem Fall nicht diephysical-strategy- oderimplicit-strategy -Eigenschaften angeben müssen, da wir die Standardeinstellungen akzeptieren.

5. Customizing-Strategien

Nehmen wir also an, wir möchten die Strategien von JPA 1.0 verwenden.

Wir müssen es nur in unserer Eigenschaftendatei angeben:

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

Oder machen Sie sie als@Beans verfügbar:

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

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

In beiden Fällen wird eine etwas andere DDL-Anweisung angezeigt, wenn wir unser Beispiel mit diesen Änderungen ausführen:

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

Wie wir sehen können, folgen diese Strategien diesmal der Namenskonvention von JPA 1.0.

Wenn wir nun die JPA 2.0-Namensregeln verwenden möchten, müssen wirImplicitNamingStrategyJpaCompliantImpl als implizite Strategie festlegen.

6. Fazit

In diesem Tutorial haben wir gesehen, wie Spring Boot Namensstrategien auf den Abfragegenerator von Hibernate anwendet, und wie diese Strategien angepasst werden.

Und wie immer sollten Sie alle diese Beispieleover on GitHub überprüfen.