Pregunta SpringBoot 1.3.0 admite hibernate 5?


Estoy un poco confundido sobre el soporte de SpringBoot (1.3.0) de Hibernate5. La referencia enumera una dependencia de hibernación 4.3.11.Final pero también enumera una dependencia en SpringFramework 4.2.3 que incluye compatibilidad con Hibernate5.

¿Es solo cuestión de agregar las dependencias adicionales de Hibernate5 para anular los paquetes de arranque? ¿Alguien puede aclarar por mí?


15
2017-12-06 23:26


origen


Respuestas:


Puede utilizar Hibernate 4.3 o Hibernate 5.0 con Spring Boot 1.3. Como ha observado, Hibernate 4.3.x es la versión predeterminada.

Para usar Hibernate 5.0, debe anular el hibernate.version propiedad en la gestión de dependencias de Spring Boot. Asumiendo que estás usando Maven:

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

Al utilizar Hibernate 5.0, la gran diferencia del uso de Hibernate 4.3.x es que perderá la estrategia de nomenclatura personalizada de Spring Boot. Debido a un cambio de rotura realizado en Hibernate 5.0, verá una advertencia como esta registrada al inicio:

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.

Si no le gustan los valores predeterminados de Hibernate 5, puede especificar una estrategia de nombres implícita o física personalizada en Spring Boot's application.properties utilizando el spring.jpa.properties.hibernate.implicit_naming_strategy y spring.jpa.properties.hibernate.physical_naming_strategy propiedades respectivamente.


16
2017-12-07 10:15



Actualización julio de 2016: Con el lanzamiento de Spring Boot 1.4.0 el valor predeterminado Hibernate 5 se utiliza como el proveedor de persistencia de JPA predeterminado.


Hay un ticket sobre la migración a Hibernate 5 desde hace algún tiempo, parece que el principal inconveniente es la incompatibilidad de algunas estrategias de nombres. A partir de ahora, el boleto está programado actualmente para 1.4.0


6
2017-12-07 00:16



¡Gracias chicos! después de muchas pruebas, ¡esta solución funcionó para mí como un encanto! Implementé una estrategia personalizada y los configuré en application.yml como se muestra a continuación:

   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

-1
2018-04-19 14:53