por sus siglas JPA, es la API de persistencia desarrollada para la plataforma Java EE. La cual es un framework del lenguaje de programación Java, que 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 POJOs). Java Persistence API, más conocida por sus siglas JPA, es la API de persistencia desarrollada para la plataforma Java EE. La cual es un framework del lenguaje de programación Java, que maneja datos relacionales en aplicaciones usando la plataforma Java en sus ediciones Standard (Java SE) y Enterprise (Java EE). Busca solucionar el problema de la diferencia entre los dos modelos de datos coexistentes en una aplicación: el usado en la memoria de la computadora (orientación a objetos) y el usado en las bases de datos (modelo relacional). Para lograr esto permite al desarrollador detallar cómo es su modelo de datos, qué relaciones existen y qué forma tienen. Con esta información Hibernate le permite a la aplicación manipular los datos en la base de datos operando sobre objetos, con todas las características de la POO. Hibernate convertirá los datos entre los tipos utilizados por Java y los definidos por SQL. Hibernate genera las sentencias SQL y libera al desarrollador del manejo manual de los datos que resultan de la ejecución de dichas sentencias, manteniendo la portabilidad entre todos los motores de bases de datos con un ligero incremento en el tiempo de ejecución. Hibernate está diseñado para ser flexible en cuanto al esquema de tablas utilizado, para poder adaptarse a su uso sobre una base de datos ya existente. También tiene la funcionalidad de crear la base de datos a partir de la información disponible. La relación que existe entre JPA e Hibernate, radica en que este último implementa como parte de su código la especificación de JPA; es decir que se puede usar Hibernate para construir una capa de persistencia apoyándose en las definiciones y reglas que la especificación de JPA, aunque esto no sea obligatorio. Sin embargo, esto no quiere decir que Hibernate simplemente implemente el standard de JPA; Hibernate es mucho más grande que la especificación de JPA y añade más funcionalidad. Una de las características más Es importante destacar que relevante de Hibernate, es que JPA es una parte de la soporta la capacidad para trabajar especificación de EJB 3, es con bases de datos NoSQL; algo que decir que no es un framework, JPA no cubre. Este soporte hace que sino que es simplemente un Hibernate permita trabajar con documento en el cual se especifica los principios bases de datos tipo MongoDB - básicos de gestión de la capa orientadas a documentos -, siempre de persistencia en el mundo y cuando se utilice Hibernate de de Java EE. En cambio, forma directa y apoyada en las Hibernate, si se trata de un anotaciones propietarias que utiliza framework que gestiona la para soportar este nuevo tipo de capa de persistencia a través de ficheros xml o anotaciones. base de datos.