Estoy de acuerdo con @Timo. La única otra idea que agregaría / ampliaría es que ORM tiene una semántica diferente del acceso SQL puro a sus datos.
El objetivo de ORM es abstraer el hecho de que sus datos están en una base de datos, tanto como sea posible. Cuando usa ORM correctamente, todas las operaciones de persistencia se tratan en una capa fina (con suerte). Los objetos de su modelo tendrán poco o ningún código de persistencia; el hecho de que esté utilizando ORM debería ser invisible para su modelo.
Debido a esto, ORM es muy bueno para facilitarle la vida a ciertos tipos de operaciones, a saber, operaciones CRUD simples. Puede cargar sus objetos de modelo, presentarlos, actualizarlos, eliminarlos con bastante facilidad. Le facilita la vida porque cuando accede a sus datos, recupera los objetos del modelo, en los que puede escribir la lógica empresarial. Si usa JDBC, tendrá que 'hidratar' sus instancias de objeto a partir de los datos, lo que puede ser complicado y propenso a errores.
ORM no siempre es la mejor opción. JPA es una herramienta para un trabajo, si la herramienta no es suficiente para el trabajo, querrá encontrar una herramienta mejor. Por ejemplo, tuve un escenario en el que tuve que copiar un gráfico de objeto completo y guardar una nueva copia de esos objetos. Si había usado ORM (como intenté hacer), tenía que cargar todos los objetos fuera de la base de datos, luego copiarlos y luego guardar los nuevos objetos. Tomé demasiado tiempo.
La mejor solución era simplemente usar operaciones basadas en jdbc e 'insertar mediante select' llamadas sql para crear las nuevas filas. Fue rápido, el código fue más simple.
La otra cosa a considerar es que se siente cómodo con JDBC y tiene fechas límite, no tiene que subirse al carro de ORM. Las clases Spring JdbcTemplate son extremadamente poderosas y útiles. A veces, la mejor herramienta para el trabajo es la que conoce. Debe familiarizarse con ORM, pero no necesariamente para un proyecto con altas expectativas. Hay mucho que aprender y no es trivial; realmente está intercambiando un conjunto de complejidades con otro en la elección de usar jdbc vs orm.