79.5 配置JPA属性

Spring Data JPA已经提供了一些独立的配置选项(比如,针对SQL日志),并且Spring Boot会暴露它们,针对Hibernate的外部配置属性也更多些。它们中的一些会通过上下文,被自动探测到,所以你不需要设置它们。

spring.jpa.hibernate.ddl-auto比较特殊。因为根据运行条件的不同,它会有不同的默认值。如果使用嵌入式数据库,而没有模式管理器(如Liquibase或Flyway)处理数据源,则默认为create-drop。在所有其他情况下,它默认为none。使用的方言也会基于目前的数据源被自动地探测到。但是如果你想要在启动时清楚明白,避开这种选择,你可以自己设置spring.jpa.database

指定一个数据库是配置Hibernate方言的一种很好的方式。多个数据库有多种方言,这可能不符合你的需求。在那种情况下,你既可以把spring.jpa.database设置为default,来让Hibernate搞定一切,也可以使用spring.jpa.database-platform属性来设置方言。

最常见的选项如下:

spring.jpa.hibernate.naming.physical-strategy=com.example.MyPhysicalNamingStrategy
spring.jpa.show-sql=true

此外,当本地的EntityManagerFactory被创建时,spring.jpa.properties.*里的所有属性会作为正常的JPA属性(前缀除去)被传递。

如果需要对Hibernate属性应用高级定制,可以考虑注册一个HibernatePropertiesCustomizer bean。它将在创建EntityManagerFactory之前被调用。这优先于自动配置所应用的任何内容。

最后更新于