===================================================hibernate 4命名策略如下=================================================
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.DefaultNamingStrategy
有兩種值可以配置分別為:
第一:org.hibernate.cfg.DefaultNamingStrategy
第二:org.hibernate.cfg.ImprovedNamingStrategy
DefaultNamingStrategy這個直接映射,不會做過多的處理(前提沒有設置@Table,@Column等屬性的時候)。如果有@Column則以@Column為准
ImprovedNamingStrategy 表名,字段為小寫,當有大寫字母的時候會轉換為分隔符號“_”。
參考地址:http://blog.csdn.net/linxingliang/article/details/52566896
===================================================hibernate 5 命名策略============================================
首先明確,上面的是hibernate4實體映射到數據表時候的命名策略。
在hibernate5之后,上面的作廢。而是采用下面兩個屬性:
spring.jpa.hibernate.naming.implicit-strategy= # Hibernate 5 implicit naming strategy fully qualified name.
spring.jpa.hibernate.naming.physical-strategy= # Hibernate 5 physical naming strategy fully qualified name.
好了,分來開說,這兩個屬性分別怎么使用》》》》》
》》首先是physical-strategy:
spring.jpa.hibernate.naming.physical-strategy = org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
它有兩個值分別可以配置:
第一:org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
第二:org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy
效果分別如下:
org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl效果等同於:
hibernate4中的DefaultNamingStrategy這個直接映射,不會做過多的處理(前提沒有設置@Table,@Column等屬性的時候)。如果有@Column則以@Column為准 【我采用這個命名策略】【多一句:對於關聯關系的依舊會命名為user_id這種樣子,看下圖】
org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy效果等同於:
hibernate4中的ImprovedNamingStrategy 表名,字段為小寫,當有大寫字母的時候會轉換為分隔符號“_”。
》》接下來說implicit-strategy的使用情況:
spring.jpa.hibernate.naming.implicit-strategy = org.hibernate.boot.model.naming.ImplicitNamingStrategyJpaCompliantImpl
它有如下的值可以配置:
第一:org.hibernate.boot.model.naming.ImplicitNamingStrategyJpaCompliantImp
第二:org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyHbmImpl
第三:org.hibernate.boot.model.naming.ImplicitNamingStrategyComponentPathImpl
效果分別如下:
====================================================
JPA2.0兼容的命名策略【默認】
spring.jpa.hibernate.naming.implicit-strategy = org.hibernate.boot.model.naming.ImplicitNamingStrategyJpaCompliantImpl
==============================================================
原始的Hibernate NamingStrategy【注意外鍵關聯字段】
spring.jpa.hibernate.naming.implicit-strategy = org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyHbmImpl
========================================================
遵循ImplicitNamingStrategyJpaCompliantImpl規則
spring.jpa.hibernate.naming.implicit-strategy = org.hibernate.boot.model.naming.ImplicitNamingStrategyComponentPathImpl