【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