天天看點

spring boot+springdataJPA【hibernate】hibernate不同版本的命名政策

=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 表名,字段為小寫,當有大寫字母的時候會轉換為分隔符号“_”。

spring boot+springdataJPA【hibernate】hibernate不同版本的命名政策

》》接下來說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
           

spring boot+springdataJPA【hibernate】hibernate不同版本的命名政策

原始的Hibernate NamingStrategy【注意外鍵關聯字段】

spring.jpa.hibernate.naming.implicit-strategy = org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyHbmImpl
           
spring boot+springdataJPA【hibernate】hibernate不同版本的命名政策

遵循ImplicitNamingStrategyJpaCompliantImpl規則

spring.jpa.hibernate.naming.implicit-strategy = org.hibernate.boot.model.naming.ImplicitNamingStrategyComponentPathImpl
           
spring boot+springdataJPA【hibernate】hibernate不同版本的命名政策

繼續閱讀