Quiero usar Spring-JDBC y Spring Hibernate en el mismo proyecto. ¿Sueno raro? En caso afirmativo, ¿qué puedo hacer o usar?

Está bien usar Hibernate y JDBC (SQL nativo) en el mismo proyecto, pero solo lo haría si hay un problema técnico que no puedo resolver con Hibernate. Hibernate brinda mucha conveniencia y ayuda con la productividad y preferiría seguir si es posible.

Si desea ser superproductivo con Hibernate y JDBC, considere echar un vistazo al proyecto Spring Data JPA.

En Spring Data JPA solo necesita configurar sus consultas DB en una interfaz y Spring crea automáticamente una implementación que se encarga de la ejecución de las consultas.

Consulte la interfaz de ejemplo de UserRepository con consultas Hibernate (JPA) y nativas (JDBC):

la interfaz pública UserRepository extiende JpaRepository {
// Consulta JPA generada automáticamente en función del nombre del método:
List findByLastname (String lastname);

// Usando JQL con parámetros:
@Query (“seleccione u del Usuario u donde u.firstname =: firstname o u.lastname =: lastname”)
Usuario findByLastnameOrFirstname (@Param (“lastname”) String lastname,
@Param (“firstname”) String firstname);

// Usando consulta SQL nativa:
@Query (value = “SELECT * FROM USERS WHERE EMAIL_ADDRESS =? 1”, nativeQuery = true)
Usuario findByEmailAddress (String emailAddress);
}

¿Cuál es la razón por la que quieres usar JDBC también? El uso de JPA o Hibernate y el lenguaje de consulta respectivo JPQL o HQL deben cubrir muchos requisitos. También puede configurar el procesamiento por lotes con Hibernate, estudie: Cómo procesar por lotes las instrucciones INSERT y UPDATE con Hibernate. El lote de primavera también puede ayudar. Depende de dónde se encuentra su aplicación (clientes de frente, o internos; servicio web en tiempo real o trabajo programado asíncrono por lotes; etc.). Si usa JPA, Hibernate y / o JDBC en lugar de solo uno de ellos, podría tener problemas. Hasta cierto punto, el uso prudente de las plantillas de Spring, las transacciones administradas por Spring a nivel de servicio, etc., para los 3 y superiores, la administración del grupo de conexiones en el mismo contexto de Spring, etc., puede abarcar algunas cosas, como crear correctamente las transacciones entre ellos, reutilizar conexiones, pero se requerirían algunas barreras / vaciado porque hibernate usa caché L2, escribe detrás y tiene grupos de entidades que quizás aún no estén sincronizados con el db. Es peligroso, e incluso si se hace correctamente, probablemente reduciría el rendimiento que podría obtener con un JPA o Hibernate cuidadoso. Si con frecuencia necesita SQL nativo, puede ser una buena idea usar SQL por completo y hacer myIbatis como una capa delgada sobre JDBC.

No es raro en absoluto. Hibernate no es bueno para todos los casos de uso, por ejemplo, el procesamiento por lotes. Hibernate es realmente malo para el procesamiento por lotes, y las confirmaciones por lotes ni siquiera funcionan en caso de inserción por lotes, si las claves primarias se generan automáticamente por la base de datos (generación automática en mysql). Por lo tanto, hibernate debe usarse para transacciones de corta duración y spring jdbc puede usarse para procesamiento por lotes.

¿Se llama Spring Hibernate? Hibernate no es mantenido por Spring, creo. Spring tiene su propio ORM que es Spring Data o Spring XD. La plantilla Spring Jdbc está disponible para llamadas JDBC gratuitas repetitivas a la fuente de datos del grupo o al propio DB.