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

 

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM