Persistencia en Yakarta

API de persistencia de Jakarta EE

Jakarta Persistence , también conocida como JPA (abreviatura del nombre anterior 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 publicación 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 persistente es una clase Java liviana cuyo estado generalmente se conserva en una tabla en una base de datos relacional . Las instancias de una entidad de este tipo corresponden a filas individuales en la tabla. Las entidades generalmente tienen relaciones con otras entidades y estas relaciones se expresan a través de metadatos de mapeo relacional/objeto (ORM). Estos metadatos se pueden especificar directamente en el archivo de clase de entidad mediante 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 establecedores/obtenedores se omiten para simplificar).

@Entity clase pública Persona { @Id id largo privado ; String nombre privado ; String apellido privado ; int edad privado ; }                

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

Lenguaje de consulta

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

Motivación

Antes de la introducción de la especificación EJB 3.0, muchos desarrolladores de Java empresariales 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, exigían un código mucho más complicado e imponían una gran huella de recursos, y solo se podían utilizar 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 los marcos de persistencia. 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.

Beans empresariales

La especificación EJB 3.0 (que forma 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 ni un servidor de aplicaciones Java EE para ejecutar aplicaciones que utilicen esta API de persistencia. [4] Las versiones futuras de la API de persistencia de Java se definirán en un JSR y una especificación independientes, en lugar de en el JSR/especificación de EJB.

La API de persistencia de Java reemplaza la solución de persistencia de EJB 2.0 CMP (Container-Managed Persistence).

API de objetos de datos de Java

La API de persistencia de Java se desarrolló en parte para unificar la API de objetos de datos de Java y la API de persistencia administrada por contenedores (CMP) de EJB 2.0. La mayoría de los productos que admiten cada una de las dos API son compatibles con la API de persistencia de Java.

La API de persistencia de Java especifica la persistencia solo para sistemas de administració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 de JPA establece: "El objetivo técnico de este trabajo es proporcionar una función de mapeo relacional de objetos para el desarrollador de aplicaciones Java que utilice un modelo de dominio Java para administrar una base de datos relacional". [5]

La especificación de objetos de datos de Java 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 objeto de datos de servicio

Los diseñadores [6] de la API de persistencia de Java apuntaron a proporcionar persistencia relacional, con muchas de las áreas clave tomadas de herramientas de mapeo relacional de objetos como Hibernate y TopLink . La API de persistencia de Java mejoró y reemplazó a EJB 2.0, evidenciado por su inclusión en EJB 3.0. La API de objetos de datos de servicio (SDO) (JSR 235) tiene un objetivo muy diferente al de la API de persistencia de Java y se considera [7] [8] complementaria. La API de 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 administra la versión Java de la API de SDO; la versión C++ de la API de 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 de persistencia de Java. [9] [10] King representó a JBoss en JSR 220, [11] el grupo de expertos de JCP encargado de desarrollar JPA. Esto llevó a una controversia y especulación continuas en torno a la relación entre JPA e Hibernate. [ cita requerida ] Sun Microsystems declaró [12] que las ideas provenían de varios marcos, incluidos Hibernate y Java Data Objects .

Datos de primavera JPA

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

Historial de versiones

Versión 2.0 de la JPA

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 fue aprobado 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 proveedores de ORM populares pero que no pudieron obtener la aprobación de consenso para JPA 1.0.

Las principales características incluidas fueron:

  • Funcionalidad ampliada de mapeo relacional de objetos
    • Soporte para colecciones de objetos incrustados, vinculados en el ORM con una relación de muchos a uno
    • Listas ordenadas
    • Combinaciones de tipos de acceso
  • Una API de consulta de criterios
  • Estandarización de sugerencias SQL
  • Estandarización de metadatos adicionales para respaldar la generación de DDL
  • Soporte para validación
  • Soporte de caché de objetos compartidos.

Proveedores que admiten JPA 2.0:

JPA 2.1

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

Las principales características incluidas fueron:

  • Convertidores, que permiten conversiones de código personalizadas entre tipos de objetos y bases de datos
  • Actualización/eliminación de criterios para permitir actualizaciones y eliminaciones masivas a través de la API de criterios
  • Gráficos de entidades para la obtención o fusión parcial o especificada de objetos.
  • Mejoras de JPQL/Criterios como subconsultas aritméticas, funciones de base de datos genéricas, cláusula de unión ON y la opción TREAT.
  • Generación de esquemas
  • Soporte para procedimientos almacenados

Proveedores que admiten JPA 2.1:

JPA 2.2

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

Las principales características incluidas fueron:

  • La adición de @Repeatable a todas las anotaciones relevantes
  • Compatibilidad con anotaciones JPA para su uso en metaanotaciones
  • Transmisión de resultados de consultas
  • La capacidad de los AttributeConverters de ser inyectables mediante CDI
  • Compatibilidad con los tipos de fecha y hora de Java 8

Proveedores que admiten JPA 2.2:

Persistencia en Yakarta 3.0

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

Proveedores que admiten Jakarta Persistence 3.0:

Persistencia en 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:

Véase también

Referencias

  1. ^ abc "Jakarta Persistence 3.1". jakarta.ee . Consultado el 27 de julio de 2022 .
  2. ^ "Tutorial de JavaEE 6". Oracle.
  3. ^ "Tutorial de JavaEE 7". Oracle.
  4. ^ Hibernate EntityManager: entornos Java SE
    Hibernate EntityManager: obtención de un EntityManager en un entorno Java SE
  5. ^ "La persistencia de Yakarta". jakarta.ee . Consultado el 5 de octubre de 2021 .
  6. ^ "Miembros del JSR 220".
  7. ^ Barreto, Charlton. "SDO y JPA". Digital Walkabout . Archivado desde el original el 13 de agosto de 2011. Consultado el 5 de mayo de 2011 .
  8. ^ Edwards, Mike. "SDO y Java Persistence Architecture (JPA)". Open 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 la API de objetos/relacionales de persistencia de Java y las interfaces de administración de persistencia
  10. ^ Persistencia de Java con Hibernate. Manning Publications. 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". Sun Microsystems. Archivado desde el original el 22 de agosto de 2008. Consultado el 1 de julio de 2010. La API de persistencia de Java aprovecha las mejores ideas de tecnologías de persistencia como Hibernate, TopLink y JDO.
  13. ^ Deinum y otros 2014.
  14. ^ "Spring Data - Sitio web del proyecto". Pivotal . Consultado el 26 de febrero de 2018 .
  15. ^ "IBM WebSphere Application Server V7 Feature Pack para aplicaciones OSGi y API de persistencia Java". Sitio web de descarga . IBM. 27 de abril de 2010 . Consultado el 8 de diciembre de 2013 .
  16. ^ "Descarga de Versant JPA en 2 pasos". Sitio web de descarga . Actian . Consultado el 8 de diciembre de 2013 .
  17. ^ "Novedades de Jakarta Persistence 3.1". Fundación Eclipse.
  18. ^ "Resultados de TCK de EclipseLink". Eclipse Foundation . Consultado el 27 de julio de 2022 .
  19. ^ "Serie ORM 6.0 de Hibernate". hibernate.org . Consultado el 27 de julio de 2022 .

Lectura adicional

  • Deinum, Marten; Rubio, Daniel; Long, Josh; Mak, Gary (1 de septiembre de 2014). Recetas de primavera: un enfoque de solución de problemas (segunda edición). Apress . ISBN 978-1-4302-2499-0.

Información general

  • Sitio web oficial
  • Documentación para la versión final de la especificación EJB3 (llamada JSR220)
  • Página de persistencia de GlassFish Archivado el 12 de enero de 2013 en archive.today
  • Página de persistencia de JCP

Tutoriales

  • Javadoc de API de persistencia de Java EE 6
  • Tutorial de la API de persistencia de Java EE 6
  • Javadoc de API de persistencia de Java EE 7
  • Tutorial de la API de persistencia de Java EE 7
  • Persistencia en el tutorial de Java EE 5
Recuperado de "https://es.wikipedia.org/w/index.php?title=La_persistencia_de_Yakarta&oldid=1247719826"