stringtranslate.com

Persistencia de Yakarta

Jakarta Persistence ( JPA ; anteriormente Java Persistence API ) es una especificación de interfaz de programación de aplicaciones Jakarta EE que describe la gestión de datos relacionales en aplicaciones Java empresariales.

La persistencia en este contexto abarca tres áreas:

La implementación de referencia para JPA es EclipseLink . [1]

Historia

La fecha de lanzamiento final de la especificación JPA 1.0 fue el 11 de mayo de 2006 como parte del Java Community Process JSR 220. La especificación JPA 2.0 se publicó el 10 de diciembre de 2009 (la plataforma Java EE 6 requiere JPA 2.0 [2] ). La especificación JPA 2.1 se publicó el 22 de abril de 2013 (la plataforma Java EE 7 requiere JPA 2.1 [3] ). La especificación JPA 2.2 se publicó en el verano de 2017. La especificación JPA 3.1, la última versión, se publicó en la primavera de 2022 como parte de Jakarta EE 10. [1]

Entidades

Una entidad de persistencia es una clase Java liviana cuyo estado generalmente persiste en una tabla en una base de datos relacional . Las instancias de dicha entidad corresponden a filas individuales de la tabla. Las entidades normalmente tienen relaciones con otras entidades, y estas relaciones se expresan a través de metadatos de mapeo de objetos/relacionales (ORM). Estos metadatos se pueden especificar directamente en el archivo de clase de entidad mediante el uso de anotaciones o en un archivo descriptor XML separado distribuido con la aplicación.

Ejemplo

Una clase de entidad de ejemplo con metadatos ORM declarados mediante anotaciones (las declaraciones de importación y los definidores/obtendores se omiten por simplicidad).

@Entity persona de clase pública { @Id identificación larga privada ; cadena privada nombre ; cadena privada apellido ; edad privada ;}                

La @Entityanotación declara que la clase representa una entidad. @Iddeclara el atributo que actúa como clave principal de la entidad. Se pueden usar anotaciones adicionales para declarar metadatos adicionales (por ejemplo, cambiar el nombre de la tabla predeterminada en la @Tableanotación) o para crear asociaciones entre entidades.

Lenguaje de consulta

El Jakarta Persistence Query Language (JPQL; anteriormente Java Persistence Query Language) realiza consultas contra entidades almacenadas en una base de datos relacional. Las consultas se parecen a las consultas SQL en su sintaxis, pero operan contra objetos de entidad en lugar de hacerlo directamente con tablas de bases de datos.

Motivación

Antes de la introducción de la especificación EJB 3.0, muchos desarrolladores empresariales de Java utilizaban objetos persistentes ligeros proporcionados por marcos de persistencia (como Hibernate ) u objetos de acceso a datos (DAO) en lugar de utilizar beans de entidad . Esto se debe a que los beans de entidad, en especificaciones EJB anteriores, requerían mucho código complicado e imponían una gran huella de recursos, y solo podían usarse en servidores de aplicaciones Java EE debido a las interconexiones y dependencias en el código fuente entre los beans y los objetos DAO o la persistencia. marcos. Por lo tanto, muchas de las características presentadas originalmente en marcos de persistencia de terceros se incorporaron a la API de persistencia de Java, y proyectos como Hibernate y TopLink Essentials se han convertido en implementaciones de la especificación de la API de persistencia de Java.

Tecnologías relacionadas

Frijoles empresariales

La especificación EJB 3.0 (en sí misma parte de la plataforma Java EE 5) incluía una definición de la API de persistencia de Java. Sin embargo, los desarrolladores no necesitan un contenedor EJB o un servidor de aplicaciones Java EE para ejecutar aplicaciones que utilizan esta API de persistencia. [4] Las versiones futuras de Java Persistence API se definirán en un JSR y una especificación separados en lugar de en la especificación/JSR de EJB.

La API de persistencia de Java reemplaza la solución de persistencia de EJB 2.0 CMP (persistencia administrada por contenedor).

API de objetos de datos de Java

La API Java Persistence se desarrolló en parte para unificar la API Java Data Objects y la API EJB 2.0 Container Managed Persistence (CMP). La mayoría de los productos que admiten cada una de las dos API admiten la API Java Persistence.

La API Java Persistence especifica la persistencia solo para sistemas de gestión de bases de datos relacionales centrándose en el mapeo relacional de objetos (ORM). Algunos proveedores de JPA admiten otros modelos de bases de datos , aunque esto está fuera del alcance del diseño de JPA. La sección de introducción de la especificación JPA establece: "El objetivo técnico de este trabajo es proporcionar una función de mapeo de objetos/relacional para el desarrollador de aplicaciones Java que utiliza un modelo de dominio Java para administrar una base de datos relacional". [5]

La especificación Java Data Objects admite ORM, así como la persistencia en otros tipos de modelos de bases de datos, por ejemplo, bases de datos de archivos planos y bases de datos NoSQL , incluidas bases de datos de documentos , bases de datos de gráficos y muchos otros almacenes de datos.

API de objetos de datos de servicio

Los diseñadores [6] de Java Persistence API intentaron proporcionar persistencia relacional, con muchas de las áreas clave tomadas de herramientas de mapeo relacional de objetos como Hibernate y TopLink . Java Persistence API mejoró y reemplazó a EJB 2.0, como lo demuestra su inclusión en EJB 3.0. La API Service Data Objects (SDO) (JSR 235) tiene un objetivo muy diferente al de Java Persistence API y se considera [7] [8] complementaria. La API SDO está diseñada para arquitecturas orientadas a servicios , múltiples formatos de datos en lugar de solo datos relacionales y múltiples lenguajes de programación. El Proceso de la Comunidad Java gestiona la versión Java de la API SDO; la versión C++ de la API SDO se administra a través de OASIS .

Hibernar

Hibernate, fundada por Gavin King, proporciona un marco de mapeo relacional de objetos de código abierto para Java . Las versiones 3.2 y posteriores proporcionan una implementación para la API Java Persistence. [9] [10] King representó a JBoss en JSR 220, [11] el grupo de expertos de JCP encargado de desarrollar JPA. Esto llevó a una continua controversia y especulación en torno a la relación entre JPA e Hibernate. [ cita necesaria ] Sun Microsystems declaró [12] que las ideas provenían de varios marcos, incluidos Hibernate y Java Data Objects .

Datos de primavera JPA [13]

Spring Data JPA es una implementación de la abstracción del repositorio que es un componente clave del diseño basado en dominios basado en el marco de aplicaciones Java Spring . Admite de forma transparente todas las implementaciones JPA disponibles y admite operaciones CRUD , así como la ejecución conveniente de consultas de bases de datos. [14] : 47 

Historial de versiones

APP 2.0

El desarrollo de una nueva versión de JPA 2.0 se inició en julio de 2007 en el Proceso de la Comunidad Java como JSR 317. JPA 2.0 se aprobó como final el 10 de diciembre de 2009. El objetivo de JPA 2.0 era abordar características que estaban presentes en algunos de los populares Proveedores de ORM, pero no pudieron obtener la aprobación por consenso para JPA 1.0.

Las principales características incluidas fueron:

Proveedores que soportan JPA 2.0:

APP 2.1

El desarrollo de la versión 2.1 de JPA comenzó en julio de 2011 como JSR 338. JPA 2.1 se aprobó como final el 22 de mayo de 2013.

Las principales características incluidas fueron:

Proveedores que soportan JPA 2.1:

APP 2.2

El desarrollo de JPA 2.2, una versión de mantenimiento, comenzó en 2017 bajo JSR 338. La revisión de mantenimiento se aprobó el 19 de junio de 2017.

Las principales características incluidas fueron:

Proveedores que soportan JPA 2.2:

Persistencia de Yakarta 3.0

La JPA pasó a llamarse Jakarta Persistence en 2019 y la versión 3.0 se lanzó en 2020. Esto incluyó el cambio de nombre de paquetes y propiedades de javax.persistence a jakarta.persistence.

Proveedores que apoyan Jakarta Persistence 3.0:

Persistencia de Yakarta 3.1

La versión 3.1 se lanzó en 2022. [1] Es parte de Jakarta EE 10 y, por lo tanto, requiere al menos Java 11 para ejecutarse. Agrega un mejor manejo de UUID, varias funciones JPQL nuevas para matemáticas y manejo de fecha/hora, y otros pequeños cambios. [17]

Proveedores que admiten Jakarta Persistence 3.1:

Ver también

Referencias

  1. ^ abc "Persistencia de Yakarta 3.1". jakarta.ee . Consultado el 27 de julio de 2022 .
  2. ^ "Tutorial de JavaEE 6". Oráculo.
  3. ^ "Tutorial de JavaEE 7". Oráculo.
  4. ^ Hibernate EntityManager: entornos Java SE
    Hibernate EntityManager: obtención de un EntityManager en un entorno Java SE
  5. ^ "Persistencia de Yakarta". jakarta.ee . Consultado el 5 de octubre de 2021 .
  6. ^ "Miembros JSR 220".
  7. ^ Barreto, Charlton. "SDO y APP". Paseo Digital . Archivado desde el original el 13 de agosto de 2011 . Consultado el 5 de mayo de 2011 .
  8. ^ Edwards, Mike. "SDO y Arquitectura de persistencia de Java (JPA)". Abra SOA . osoa.org . Consultado el 5 de mayo de 2011 .
  9. ^ "hibernate.org - Persistencia de Java con Hibernate". JBoss . Consultado el 17 de noviembre de 2008 . Hibernate implementa el objeto Java Persistence/javaAPI relacional y las interfaces de gestión de persistencia
  10. ^ Persistencia de Java con Hibernación. Publicaciones de Manning. 8 de noviembre de 2015. ISBN 9781617290459. Consultado el 8 de diciembre de 2013 . Gavin King es el fundador del proyecto Hibernate
  11. ^ "JBoss.com - Liderazgo en la industria". JBoss . Consultado el 17 de noviembre de 2008 . JSR 220, Comité de especificaciones EJB 3.0, Gavin King, Bill Burke, Marc Fleury
  12. ^ "Preguntas frecuentes sobre la API de persistencia de Java". Microsistemas solares. Archivado desde el original el 22 de agosto de 2008 . Consultado el 1 de julio de 2010 . La API Java Persistence se basa en las mejores ideas de tecnologías de persistencia como Hibernate, TopLink y JDO.
  13. ^ "Spring Data - Sitio web del proyecto". Fundamental . Consultado el 26 de febrero de 2018 .
  14. ^ Deinum y otros. 2014.
  15. ^ "Paquete de características de IBM WebSphere Application Server V7 para aplicaciones OSGi y API de persistencia de Java". Descargar sitio web . IBM. 27 de abril de 2010 . Consultado el 8 de diciembre de 2013 .
  16. ^ "Descarga de Versant JPA en dos pasos". Descargar sitio web . Actiano . Consultado el 8 de diciembre de 2013 .
  17. ^ "Novedades de Jakarta Persistence 3.1". Fundación Eclipse.
  18. ^ "Resultados TCK de EclipseLink". Fundación Eclipse . Consultado el 27 de julio de 2022 .
  19. ^ "Serie Hibernar ORM 6.0". hibernate.org . Consultado el 27 de julio de 2022 .

Otras lecturas

enlaces externos

Información general

Tutoriales