Java Persistence API
# Java Persistence API

Java Persistence API, más conocida por sus siglas JPA, es una API de persistencia desarrollada para la plataforma Java EE.

Maneja datos relacionales en aplicaciones usando la Plataforma Java en sus ediciones Standard (Java SE) y Enterprise (Java EE).

La JPA se origina a partir del trabajo del JSR 220 Expert Group el cual correspondía a EJB3. JPA 2.0 sería el trabajo del JSR 317 y posteriormente JPA 2.1 en el JSR 338.

Persistencia en este contexto cubre tres áreas:

* La API en sí misma, definida en el paquete javax.persistence
* El lenguaje de consulta Java Persistence Query Language (JPQL).
* Metadatos objeto/relacional.

El objetivo que persigue el diseño de esta API es no perder las ventajas de la orientación a objetos al interactuar con una base de datos (siguiendo el patrón de mapeo objeto-relacional), como sí pasaba con EJB2, y permitir usar objetos regulares (conocidos como POJO).

## Historia

La fecha del lanzamiento final de las especificaciones del JPA 1.0 fue el 11 de mayo de 2006. Esta fue parte del Proceso de comunidad Java (Java Community Process). Las especificaciones de la versión JPA 2.0 fueron lanzadas el 10 de diciembre de 2009. Mientras las de la JPA 2.1 se lanzó el 22 de abril de 2013.

## Entidades (Entities)

Una entidad de persistencia (entity) es una clase de Java ligera, cuyo estado es persistido de manera asociada a una tabla en una base de datos relacional. Las instancias de estas entidades corresponden a un registro (conjunto de datos representados en una fila) en la tabla. Normalmente las entidades están relacionadas con otras entidades, y estas relaciones son expresadas a través de metadatos objeto/relacional. Los metadatos del objeto/relacional pueden ser especificados directamente en el fichero de la clase, usando las anotaciones de Java (annotations), o en un documento descriptivo XML, el cual es distribuido junto con la aplicación.TEST

## Implementaciones

* Hibernate
* ObjectDB
* TopLink
* CocoBase
* EclipseLink
* OpenJPA
* Kodo
* DataNucleus, antes conocido como JPOX
* Amber

### Frameworks

* OpenXava: Motor de Aplicación JPA: Para el desarrollo rápido de aplicaciones desde entidades JPA.
