# 79.6 配置Hibernate命名策略

Hibernate使用[两种不同的命名策略](https://docs.jboss.org/hibernate/orm/5.2/userguide/html_single/Hibernate_User_Guide.html#naming)将对象模型的名称映射到相应的数据库名称。可以通过设置`spring.jpa.hibernate.naming.physical-strategy`和`spring.jpa.hibernate.naming.implicit-strategy`属性来配置物理和隐式策略实现的完全限定类名。或者，如果应用程序上下文中有`ImplicitNamingStrategy`或`PhysicalNamingStrategy` bean可用，Hibernate将自动配置为使用它们。

默认情况下，Spring Boot使用`SpringPhysicalNamingStrategy`配置物理命名策略。这个实现提供了与Hibernate 4相同的表结构:所有的点都用下划线替换，驼峰式大小写也用下划线替换。默认情况下，所有表名都是用小写字母生成的，但是如果您的模式需要，可以覆盖该标志。

例如，`TelephoneNumber`实体映射到`telephone_number`表。

如果你更喜欢使用Hibernate 5的默认设置，设置如下属性:

```
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
```

或者，你可以配置以下bean：

```java
@Bean
public PhysicalNamingStrategy physicalNamingStrategy() {
    return new PhysicalNamingStrategyStandardImpl();
}
```

具体详情可参考[HibernateJpaAutoConfiguration](https://github.com/spring-projects/spring-boot/tree/v2.0.0.RELEASE/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.java)和[JpaBaseConfiguration](https://github.com/spring-projects/spring-boot/tree/v2.0.0.RELEASE/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/orm/jpa/JpaBaseConfiguration.java)。
