• Giovanny Rey Cediel

¿Qué es y por qué Spring Data JDBC?

Actualizado: oct 17



Spring presenta un amplio conjunto de herramientas para manejar la persistencia de datos. Cuando se trata de bases de datos transaccionales, Spring presenta tres frameworks, por un lado esta, Spring JDBC, que permite manejar conexiones y ejecutar queries usando el objeto JdbcTemplate. Por otro lado esta, Spring JPA, el cual, bajo una serie de configuraciones, trata de mapear una tabla de base de datos en una clase java. De manera intermedia, esta situado Spring Data JDBC, el cual fue anunciado en Septiembre de 2018, con el propósito de proporcionar a los desarrolladores una alternativa más simple que JPA, sin perder la flexibilidad de JDBC.


¿Por qué Spring Data JDBC?

JPA hace varias cosas que se suponen hacen la vida más fácil al desarrollador. Por ejemplo, realiza operaciones de filtro y CRUD de forma casi automática, bajo ciertas reglas, intenta sincronizar una caché de cambios entre entidades y la base de datos, desempeña “lazy loading” (carga diferida), y otras tantas cosas. Sin embargo, con frecuencia resulta confuso como trabaja. En sus inicios JPA persiguió la idea de mapear un conjunto de datos en una base de datos, como una lista de objetos en java, esto es verdad hasta cierto punto. En no pocas ocaciones, el desempeño de un conjunto de datos esta estrechamente ligado con el motor de base de datos. JPA ha gastado la mayor parte de su API en mapear aspectos que definitivamente desempeña mejor el motor de base de datos. Es en este punto, donde se crea una necesidad, por un lado, es deseable disponer de operaciones simples de filtro y CRUD, pero también, es deseable disponer de la flexibilidad que JDBC ofrece para interactuar con el motor de base de datos. Tal es el caso, de ejecutar consultas complejas de forma nativa, seleccionando únicamente los campos necesarios, para evitar el antipatrón conocido como Cadenas de Mensajes, que directamente infringe la ley de Demeter, sin entrar en detalles, esto significa que un método no debe invocar métodos de ningún objeto que no sea local, el síntoma de este antipatrón es una cadena de llamadas como la siguiente: getA().getB().getC()…, no es secreto que JPA promueve estas cadenas. Spring Data JDBC apunta a cubrir la mencionada necesidad, adoptando las siguientes decisiones de diseño:


  • Si se carga una entidad, se ejecutan las sentencias SQL. Una vez hecho esto, se tiene una entidad completamente cargada. No se realiza ninguna carga diferida o almacenamiento en caché.


  • Si se guarda una entidad, realmente se guarda en base de datos. Si no es así, no se guarda en base de datos. No hay mecanismos de Dirty Checking ni de sesión.


  • Existe un modelo de cómo asignar entidades a tablas. Funciona para casos simples. Si este no se desea, siempre se tiene la posibilidad de codificar una estrategía personalizada. Spring Data JDBC también ofrece un soporte básico para personalizar la estrategia con anotaciones.


Este articulo presenta Spring Data JDBC, proyecto que decide lanzar Spring, con el ánimo de presentar una opción intermedia entre JDBC y JPA. En próximos artículos exploraremos algunas de las más importantes características de este framework.

Copyright Giovynet.com 2018 - 2020