1. 程式人生 > 實用技巧 >Hibernate資料庫配置項中命名策略說明

Hibernate資料庫配置項中命名策略說明

一、Hibernate5之前

命名策略採用naming-strategy配置項

spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.DefaultNamingStrategy

1、配置值org.hibernate.cfg.DefaultNamingStrategy

hibernate預設配置,採用直接對映的方式,不會做過多的處理,當然前提是沒有使用@Table和@Column註解,如果有則以註解內容為準。

2、配置值org.hibernate.cfg.ImprovedNamingStrategy

表名,欄位為小寫,當有大寫字母的時候會新增下劃線分隔符號,如:user_id。

二、Hibernate5之後

採用implicit-strategy和physical-strategy兩個配置項分別控制命名策略

    spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyJpaCompliantImpl
    spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

1、implicit-strategy和physical-strategy的區別

(1)、implicit-strategy負責模型物件層次的處理,將物件模型處理為邏輯名稱。physical-strategy負責對映成真實的資料名稱的處理,將上述的邏輯名稱處理為物理名稱。

(2)、當沒有使用@Table和@Column註解時,implicit-strategy配置項才會被使用,當物件模型中已經指定時,implicit-strategy並不會起作用。physical-strategy一定會被應用,與物件模型中是否顯式地指定列名或者已經被隱式決定無關。

2、implicit-strategy邏輯名稱命名策略

有五個配置值

    org.hibernate.boot.model.naming.ImplicitNamingStrategyJpaCompliantImpl
    org.hibernate.boot.model.naming.ImplicitNamingStrategyComponentPathImpl
    org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyHbmImpl
    org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl
    org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy

預設為ImplicitNamingStrategyJpaCompliantImpl,後四者均繼承自它。

3、physical-strategy物理名稱命名策略

有兩個配置值:

預設為SpringPhysicalNamingStrategy

    #直接對映,不會做過多的處理
    org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
    #表名,欄位為小寫,當有大寫字母的時候會新增下劃線分隔符號
    org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy