74.5 配置JPA属性

Spring Data JPA已经提供了一些独立的配置选项(比如,针对SQL日志),并且Spring Boot会暴露它们,针对hibernate的外部配置属性也更多些,最常见的选项如下:

  1. spring.jpa.hibernate.ddl-auto=create-drop
  2. spring.jpa.hibernate.naming.physical-strategy=com.example.MyPhysicalNamingStrategy
  3. spring.jpa.database=H2
  4. spring.jpa.show-sql=true

ddl-auto配置是个特殊情况,它的默认设置取决于是否使用内嵌数据库(是则默认值为create-drop,否则为none)。当本地EntityManagerFactory被创建时,所有spring.jpa.properties.*属性都被作为正常的JPA属性(去掉前缀)传递进去了。

Spring Boot提供一致的命名策略,不管你使用什么Hibernate版本。如果使用Hibernate 4,你可以使用spring.jpa.hibernate.naming.strategy进行自定义;Hibernate 5定义一个PhysicalImplicit命名策略:Spring Boot默认配置SpringPhysicalNamingStrategy,该实现提供跟Hibernate 4相同的表结构。如果你情愿使用Hibernate 5默认的,可以设置以下属性:

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

具体详情可参考HibernateJpaAutoConfigurationJpaBaseConfiguration