paint-brush
La diferencia entre JDBC, JPA, Hibernate y Spring Data JPAby@staceybdavis
36,427
36,427

La diferencia entre JDBC, JPA, Hibernate y Spring Data JPA

Stacey Davis2021/08/25
Read on Terminal Reader
Read this story w/o Javascript
tldt arrow
ES

Java Database Connectivity (JDBC) es el puente entre el mundo Java y el mundo de la base de datos. Spring Data JPA es una biblioteca que agrega una capa adicional de abstracción además de la implementación de ORM JPA. Hibernate es el marco ORM (Object Relational Mapping) más popular para trabajar con una base de datos, lo dejo como mi elección. Lo único que debe especificar es el host de su base de datos y la contraseña para acceder a la base de datos.

Company Mentioned

Mention Thumbnail
featured image - La diferencia entre JDBC, JPA, Hibernate y Spring Data JPA
Stacey Davis HackerNoon profile picture


La mayoría de los programas Java utilizan bases de datos relacionales (MySQL, PostgreSQL) para almacenar datos para su posterior procesamiento. Esto es muy común, especialmente cuando se trata de aplicaciones web que tienen una amplia gama de interacciones con el usuario.


Conectar una base de datos a una aplicación Java no es un proceso fácil. Debe tener en cuenta el grupo de conexiones, la capa de acceso a los datos, la asignación correcta de la tabla de la base de datos y el objeto Java.


Afortunadamente, ya existen desarrollos serios en forma de bibliotecas y marcos que los programadores pueden usar para facilitarles el trabajo con las tareas anteriores.


En este artículo, intentaré revelar solo la diferencia entre JDBC, JPA, Hibernate, Spring Data JPA en el marco de la ejecución de consultas a través de Java, sin considerar los grupos de conexiones y otros matices.


Conectividad de base de datos Java - JDBC


La primera forma de conectar una aplicación Java a una base de datos es usando JDBC (Java Database Connectivity).


Sun Microsystems lanzó JDBC como parte de JDK en febrero de 1997. Podemos decir que JDBC es el puente entre el mundo Java y el mundo de las bases de datos. Después de todo, lo primero que buscamos cuando queremos conectar una base de datos a nuestra aplicación es el controlador JDBC.


Si estamos trabajando con Maven, entonces estamos buscando una dependencia de controlador para una base específica. Una de las desventajas de JDBC es que el código que sale al final se ve muy grande en volumen (aunque no hace mucho trabajo).


El proceso se complica cuando el objeto Java que estamos intentando guardar en la base de datos o recuperar es muy grande. Debe asignar correctamente los campos de la base de datos y los campos de la clase Java.


Sucede que en el proceso de trabajo necesita agregar un campo a la tabla terminada en la base de datos. Luego, debe encontrar todas las solicitudes a la base de datos en el código de la aplicación para agregar este campo.


Para aprovechar al máximo el "dolor" de trabajar con JDBC, debe trabajar con él. Y para los que ya estén familiarizados con esta funcionalidad, creo que las explicaciones estarán de más.

La persistencia de Java - API

JPA tiene como objetivo abordar las deficiencias anteriores. La especificación de la API de persistencia de Java es una tecnología que le permite asignar convenientemente un objeto Java y una tabla de base de datos.


En JDBC, cuando escribe cada consulta, debe incluir en el código todos los detalles necesarios para las operaciones CRUD, como nombres de tablas, nombres de columnas. En JPA (que usa JDBC "bajo el capó"), también especifica estos datos, pero solo una vez, al anotar una clase Java.


La especificación JPA en sí misma no es una herramienta o marco; más bien, define un conjunto de conceptos que pueden y deben ser implementados por cualquier otra herramienta.


Dado que JPA es solo una especificación, necesita una herramienta para implementarlo.


Esta herramienta puede ser Hibernate, TopLink, iBatis, etc.

Dado que Hibernate es el marco ORM (Mapeo relacional de objetos) más popular para trabajar con una base de datos, lo dejo como mi elección. Pero lo mismo ocurre con otras bibliotecas ORM de las que probablemente ni siquiera hayas oído hablar.


Puede pensar en JPA como una interfaz e Hibernate como una implementación. Sin Hibernate, JPA será de poca utilidad para su código. Aunque tanto Hibernate como JPA se pueden usar por separado junto con otras herramientas.


¿Qué pasa con Spring Data JPA?


Esta biblioteca es parte de Spring Framework, uno de los marcos de Java más populares en la actualidad. El objetivo de Spring Data es reducir la cantidad de repeticiones necesarias para implementar capas de acceso a datos para varias bases de datos.


Spring Data JPA es una biblioteca que agrega una capa adicional de abstracción además de la implementación de ORM JPA. De forma predeterminada, Spring Data JPA utiliza Hibernate como proveedor de ORM (para ejecutar consultas). Esto, por cierto, se puede cambiar usando la configuración de Spring. Aunque no recomendaría hacer esto a usuarios inexpertos.


Si está utilizando Spring Boot con Spring Data JPA, entonces tiene todas las configuraciones necesarias para conectar una aplicación Java a la base de datos. Lo único que debe especificar es el host de su base de datos, el nombre de usuario y la contraseña para acceder a ella.


Spring Boot proporciona configuración automática para todas las conexiones de bases de datos. Incluida la piscina de conexiones. Para obtener más información sobre los procesos de Spring Data JPA, debe leer las preguntas de la entrevista de Spring . Será útil tanto para los novatos como para los codificadores profesionales.


Como puede ver, con el tiempo, JDBC, que se lanzó en 1997, se ha llenado de capas de abstracciones que permiten a los programadores concentrarse en resolver un problema comercial en lugar de perder el tiempo escribiendo un montón de clases de configuración para configurar una base de datos.


Ahora tienes la oportunidad de conectar cualquier almacén de datos (no solo una base de datos relacional) en un par de clics, sin tener que activar "Bailando con una pandereta", como se hacía antes. Las consultas SQL tendrán que pasar por muchas capas antes de llegar a la base misma. Pero desde mi propia experiencia, puedo decir que en la mayoría de los casos, la caída en la velocidad de ejecución de consultas no se observa si usa JDBC o Spring Data JPA. Solo debe tener cuidado con las solicitudes complejas y grandes.


Para los novatos, recomiendo probar JDBC primero. Haga esto para poder compararlos con Hibernate y Spring. La diferencia será realmente notable. Al hacerlo, descubrirá cómo funcionan todos los marcos debajo del capó.