SpringBoot 1.3.0 поддерживает Hibernate 5?
Я немного озадачен поддержкой SpringBoot (1.3.0) Hibernate5. Ссылка перечисляет зависимость от hibernate 4.3.11.Final, но также перечисляет зависимость от SpringFramework 4.2.3, которая включает поддержку Hibernate5.
Это просто вопрос добавления дополнительных зависимостей Hibernate5 для переопределения пакетов Boot? Может кто-нибудь уточнить, пожалуйста, для меня?
3 ответа
Вы можете использовать Hibernate 4.3 или Hibernate 5.0 с Spring Boot 1.3. Как вы заметили, Hibernate 4.3.x является версией по умолчанию.
Чтобы использовать Hibernate 5.0, вы должны переопределить hibernate.version
свойство в управлении зависимостями Spring Boot. Предполагая, что вы используете 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_strategy
а также spring.jpa.properties.hibernate.physical_naming_strategy
свойства соответственно.
Обновление июль 2016: С выпуском Spring Boot 1.4.0 Hibernate 5 по умолчанию используется в качестве поставщика сохраняемости JPA по умолчанию.
В течение некоторого времени существует требование о переходе на Hibernate 5 - похоже, основным недостатком является некоторая несовместимость стратегии имен. На данный момент билет запланирован на 1.4.0
Спасибо, парни! после многих испытаний это решение сработало для меня как шарм! Я реализовал собственную стратегию и установил ее в 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