JPA (Java Persistence API) es una especificación estándar de Java para el mapeo objeto-relacional (ORM), que permite interactuar con bases de datos relacionales utilizando objetos Java.
Con JPA se pueden:
• Definir clases Java como entidades persistentes (@Entity).
• Especificar relaciones entre entidades (uno a muchos, muchos a muchos, etc.).
• Realizar operaciones como insertar, actualizar, eliminar y consultar datos sin escribir SQL explícito.
JPA no es una implementación, sino una interfaz estándar. Las implementaciones más comunes son:
• Hibernate (la más usada)
• EclipseLink
• OpenJPA
Spring Data JPA es un módulo de Spring que simplifica el uso de JPA:
• Permite definir interfaces de repositorio sin necesidad de implementar los métodos CRUD.
• Integra la capa de persistencia con el resto del ecosistema de Spring (inyección de dependencias, control transaccional, validaciones, etc.).
• Facilita la creación de consultas con nombres de método (findByNombre, findByEmailContaining, etc.).
• Soporta JPQL, SQL nativo y consultas dinámicas.
Spring Data JPA es una abstracción sobre JPA que reduce drásticamente el código necesario para acceder a la base de datos.
Ventajas de usar JPA con Spring
• Menos código repetitivo: no es necesario implementar manualmente métodos CRUD.
• Integración total con Spring: todo se gestiona mediante inyección de dependencias y configuración automática.
• Consultas declarativas: se pueden crear consultas complejas usando el nombre del método.
• Abstracción del SQL: permite trabajar con objetos sin escribir sentencias SQL directamente.
• Gestión automática del contexto de persistencia: Spring gestiona transacciones, apertura y cierre de conexiones.
• Compatible con múltiples bases de datos: MySQL, PostgreSQL, H2, Oracle, SQL Server, etc.
En el siguiente post vamos con algo más práctico.