¿Qué es Java Persistence API (JPA)?: Simplifica el manejo de bases de datos

| Última modificación: 23 de septiembre de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

JPA, el acrónimo de Java Persistence API, es una especificación que hace posible la gestión de la persistencia de datos en aplicaciones Java sin tener que preocuparte mucho por el código SQL. Este es un concepto muy recurrente en manejo de bases de datos, por eso el día d ehoy te queremos enseñar qué es, cómo funciona y cómo usarlo.

JPA java persistence api

¿Qué es JPA y para qué sirve?

JPA es una API perteneciente a Java que ha sido diseñada para gestionar la persistencia de los objetos en una base de datos relacional. Es decir, Java Persistence API te permite almacenar objetos de una aplicación en la base de datos y recuperarlos cuando los necesites, todo sin tener que hacer uso de código SQL ni una sola línea. Lo mejor de todo es que lo hace de manera natural para los programadores Java, así que se puede trabajar directamente con objetos Java que se sincronizan con tablas de la base de datos.

¿Cómo funciona JPA?

Para su funcionamiento, JPA hace uso del mapeo objeto-relacional, también denominado ORM, de este modo puede vincular las clases de Java con tablas en una base de datos. Durante este proceso, las clases son definidas como entidades, estas entidades a su vez son manejadas por un EntityManager, el cual se encarga de realizar operaciones del CRUD: create (crear), read (leer o consultar), update (actualizar) y delete (eliminar) con dichas entidades.

El primer paso para utilizar JPA en una aplicación Java es configurar un archivo llamado persistence.xml. Este archivo contiene la configuración necesaria para conectar tu aplicación a la base de datos, así como las entidades que vas a gestionar. Un ejemplo de este archivo es:

<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
<persistence-unit name="UnidadPersonas">
<class>es.curso.bo.Persona</class>
<properties>
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="javax.persistence.jdbc.password" value="jboss"/>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/jpa"/>
</properties>
</persistence-unit>
</persistence>

Este archivo generalmente se puede encontrar en la carpeta META-INF de un proyecto y permite definir la conexión a la base de datos, las propiedades necesarias y las clases que van a ser gestionadas como entidades.

El papel de EntityManager en JPA

Uno de los componentes más importantes dentro del JPA es el EntityManager. Este se encarga de realizar todas las operaciones de persistencia sobre los objetos en Java. Algunas de esas operaciones son:

  • Persistir: Guardar una nueva entidad en la base de datos.
  • Merge: Actualizar una entidad existente.
  • Remove: Eliminar una entidad.
  • Find: Buscar una entidad por su clave primaria.

Por ejemplo, para guardar un objeto en la base de datos, utilizarías el método persist() de EntityManager:

EntityManagerFactory emf = Persistence.createEntityManagerFactory("UnidadPersonas");
EntityManager em = emf.createEntityManager();

Persona persona = new Persona("Juan", 30);

em.getTransaction().begin();
em.persist(persona);
em.getTransaction().commit();

Para este caso primero hemos creado una entidad llamada Persona y luego hemos usado el EntityManager para guardar ese objeto en la base de datos dentro de una transacción.

Un vistazo a JPQL: consultas con JPA

Otra de las características que más destaca en los JPA es JPQL (Java Persistence Query Language), un lenguaje de consultas que nos permite realizar las consultas de forma similar a SQL, pero sobre objetos. Si por ejemplo quieres seleccionar todas las entidades Persona de una base de datos, puedes usar el siguiente código:

List<Persona> personas = em.createQuery("SELECT p FROM Persona p", Persona.class).getResultList();
for (Persona persona : personas) {
System.out.println(persona);
}

Si quieres seguir aprendiendo más sobre Java y sus secretos, no dudes en inscribirte a nuestro Bootcamp sobre Java, en, donde podrás aprender a integrar bases de datos en aplicaciones java, a programar en este lenguaje, aprender sus mejores trucos y muchas cosas más dentro del curso. ¡Da el salto hacia el mundo tecnológico, donde te esperan grandes oportunidades!

Ramón Maldonado

Full Stack Developer y Responsable de Formación base en KeepCoding.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Java y Spring Boot

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado