SpringBoot 1.3.0 支持hibernate 5?

SpringBoot 1.3.0 support hibernate 5?

我对 SpringBoot (1.3.0) 对 Hibernate5 的支持有点困惑。该参考列出了对 hibernate 4.3 的依赖。11.Final 但它也列出了对 SpringFramework 4.2.3 的依赖,其中包括 Hibernate5 支持。

是否只是添加额外的 Hibernate5 依赖项来覆盖引导包的问题?有人可以为我澄清一下吗?

2016 年 7 月更新:随着 Spring Boot 1.4.0 的发布,默认 Hibernate 5 is used as the default JPA persistence provider.


ticket about migrating to Hibernate 5 有一段时间了 - 似乎主要的挫折是一些名称策略不兼容。截至目前,门票目前预定 1.4.0

您可以将 Hibernate 4.3 或 Hibernate 5.0 与 Spring Boot 1.3 一起使用。如您所见,Hibernate 4.3.x 是默认版本。

要使用 Hibernate 5.0,您应该覆盖 Spring Boot 依赖管理中的 hibernate.version 属性。假设您使用的是 Maven:

<properties>
    <hibernate.version>5.0.5.Final</hibernate.version>
</properties>

使用 Hibernate 5.0 时,与使用 Hibernate 4.3.x 的一大区别是您将失去 Spring Boot 的自定义命名策略。由于 Hibernate 5.0 中的重大更改,您将在启动时看到如下警告:

2015-12-07 10:04:56.911  WARN 81371 --- [           main] org.hibernate.orm.deprecation            : HHH90000006: Attempted to specify unsupported NamingStrategy via setting [hibernate.ejb.naming_strategy]; NamingStrategy has been removed in favor of the split ImplicitNamingStrategy and PhysicalNamingStrategy; use [hibernate.implicit_naming_strategy] or [hibernate.physical_naming_strategy], respectively, instead.

如果您不喜欢 Hibernate 5 的默认设置,您可以在 Spring Boot 的 application.properties 中分别使用 spring.jpa.properties.hibernate.implicit_naming_strategyspring.jpa.properties.hibernate.physical_naming_strategy 属性指定自定义隐式或物理命名策略。

谢谢大家!经过多次试验,这个解决方案对我来说就像一个魅力!我实施了自定义策略并将它们设置在 application.yml 中,如下所示:

   jpa:
    database: MYSQL
    database-platform: org.hibernate.dialect.MySQL5Dialect
    properties:
        hibernate:
            implicit_naming_strategy: org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyHbmImpl
            physical_naming_strategy: com.quicken.ups.entities.utils.DBFieldNamingStrategy