知識庫 / Spring / Spring Boot RSS 訂閱

Spring Boot 中 Hibernate 字段命名

Spring Boot,Spring Persistence
HongKong
6
01:37 PM · Dec 06 ,2025

1. 簡介

在本簡要教程中,我們將學習如何在 Spring Boot 應用程序中使用 Hibernate 命名策略。

2. Maven 依賴

如果我們的項目基於 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. 策略實施

如果創建了一個 賬户 實體:

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

然後,請在我們的屬性文件中啓用 SQL 調試:

hibernate.show_sql: true

啓動時,我們的日誌中會看到以下語句:

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

如您所見,字段使用小寫字母下劃線命名方式,遵循 Spring 的約定。

請記住,在本例中,我們無需指定 physical-strategyimplicit-strategy 屬性,因為我們接受默認值。

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 類型的 Bean:

@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 的查詢生成器,並且我們還看到了如何自定義這些策略。

user avatar
0 位用戶收藏了這個故事!
收藏

發佈 評論

Some HTML is okay.