Java™ Persistence API representa una simplificación del modelo de programación de persistencia.
Persistencia de datos, la capacidad de mantener datos entre sesiones de aplicación en alguna forma de almacenamiento
no volátil (como por ejemplo, una base de datos relacional) es crucial para aplicaciones empresariales. Las aplicaciones
que se desarrollan para este entorno deben gestionar persistencia de datos por sí mismas o utilizar soluciones de otras
empresas para manejar actualizaciones y recuperaciones de base de datos. JPA proporciona un mecanismo para gestionar
persistencia de datos y correlación relacional de objeto y funciones para las especificaciones de EJB 3.0.
JPA está basado en el modelo de programación
Java que se aplica a entornos
Java EE pero JPA también puede
funcionar en el entorno Java
SE. La especificación JPA define internamente la correlación relacional de objeto en lugar de basarse en
implementaciones de correlación específicas de proveedor y utiliza anotaciones o XML para correlacionar objetos en
tablas de base de datos.
JPA está diseñado para funcionar dentro y fuera de un contenedor Java Enterprise Edition (Java EE). Cuando ejecuta JPA
dentro de un contenedor, las aplicaciones pueden utilizar el contenedor para gestionar la persistencia. Si no existe ningún contenedor para gestionar
JPA, la aplicación debe manejar ella misma la gestión de persistencia.
Las aplicaciones que se han diseñado para la persistencia gestionada por contenedor no se pueden utilizar fuera de un contenedor, mientras que las aplicaciones que gestionan su propia persistencia pueden funcionar tanto en un entorno de contenedores como en un entorno Java SE.
JPA también proporciona un lenguaje de consulta, JPQL, que puede utilizar para recuperar objetos sin escribir
consultas SQL específicas de la base de datos con la que está trabajando.
Los contenedores Java EE que dan soporte a JPA deben proporcionar un proveedor de persistencia. Un proveedor de persistencia JPA utiliza los
elementos siguientes para persistir datos en un entorno EJB 3.0:
- Objetos de entidad: Una entidad es una clase Java simple que representa un fila de una tabla de base de datos. Las entidades pueden ser clases concretas o clases abstractas. Mantienen estados mediante la utilización de propiedades o campos.
- EntityManager: Un objeto EntityManager mantiene la recopilación activa de objetos de entidad que la
aplicación está utilizando. El objeto EntityManager maneja la interacción de base de datos y metadatos para
correlaciones relacionales de objeto. Una instancia de un objeto EntityManager representa un contexto de persistencia.
Una aplicación en un contenedor puede obtener EntityManager por inyección en la aplicación o buscándolo en el espacio
de nombres del componente Java.
Si la aplicación gestiona su
persistencia, el EntityManager se obtiene desde EntityManagerFactory. Los contenedores del servidor de aplicaciones
normalmente proporcionan esta función, pero es necesario EntityManagerFactory si se
utiliza la persistencia gestionada por las aplicaciones JPA.
Nota: Sólo se da soporte a la inyección del EntityManager para los
artefactos siguientes:
- Beans de sesión EJB 3.0.
- Beans controlados por mensaje EJB 3.0.
- Servlets, pero la inyección no está soportada en JSP.
- La clase principal del cliente de aplicación.
- EntityManagerFactory: La fábrica se utiliza para crear un EntityManager para interacciones de base de datos.
- Unidad de persistencia: una unidad de persistencia consta de los metadatos declarativos que describen la
relación de objetos de clase de entidad con una base de datos relacional. EntityManagerFactory utiliza estos datos para crear un contexto de
persistencia al que se puede acceder mediante EntityManager.
- Contexto de persistencia: El contexto de persistencia es el conjunto de instancias activas que la aplicación está gestionando. El contexto de persistencia se puede crear
manualmente o mediante inyección.