Hibernate資料庫配置項中命名策略說明
阿新 • • 發佈:2020-07-30
一、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