JPA vs Hibernate
Se requieren casi todas las aplicaciones empresariales para acceder a bases de datos relacionales con regularidad. Pero un problema al que se enfrentaron las tecnologías anteriores (como JDBC) fue el desajuste de impedancia (diferencia entre tecnologías orientadas a objetos y tecnologías relacionales). Se introdujo una solución para este problema a través de la introducción de una capa abstracta llamada capa de persistencia, que encapsula el acceso a la base de datos desde la lógica empresarial. JPA (Java Persistence API) es un marco dedicado para la gestión de datos relacionales (utilizando la capa de persistencia) en aplicaciones Java. Hay muchas implementaciones de JPA de proveedores utilizadas dentro de la comunidad de desarrolladores de Java. Hibernate es la implementación más popular de JPA (DataNucleus, EclipseLink y OpenJPA son otras). La versión más reciente de JPA (JPA 2.0) es totalmente compatible con Hibernate 3.5, que se lanzó en marzo de 2010..
¿Qué es JPA??
JPA es un marco para la gestión de datos relacionales para Java. Se puede utilizar con aplicaciones que utilizan JSE (Java Platform, Standard Edition) o JEE (Java Platform, Enterprise Edition). Su versión actual es JPA 2.0, que se lanzó el 10 de diciembre de 2009. JPA reemplazó a los beans de entidad EJB 2.0 y EJB 1.1 (que fueron muy criticados por la comunidad de desarrolladores de Java). Aunque los beans de entidad (en EJB) proporcionaban objetos de persistencia, muchos desarrolladores estaban acostumbrados a utilizar objetos relativamente ligeros ofrecidos por DAO (Objetos de acceso a datos) y otros marcos similares en su lugar. Como resultado, se introdujo JPA y capturó muchas de las características de los marcos mencionados anteriormente..
La persistencia como se describe en JPA cubre la API (definida en javax.persistence), JPQL (Java Platform, Enterprise Edition) y los metadatos necesarios para los objetos relacionales. El estado de una entidad de persistencia generalmente se conserva en una tabla. Las instancias de una entidad corresponden a las filas de la tabla de la base de datos relacional. Los metadatos se utilizan para expresar las relaciones entre las entidades. Se utilizan anotaciones o archivos descriptores XML separados (implementados con la aplicación) para especificar los metadatos en las clases de entidad. JPQL, que es similar a las consultas SQL, se utiliza para consultar entidades almacenadas.
Que es hibernar?
Hibernate es un marco que se puede utilizar para la asignación de objetos relacionales para el lenguaje de programación Java. Más específicamente, es una biblioteca ORM (mapeo objeto-relacional) que puede usarse para mapear el modelo objeto-relacional en el modelo relacional convencional. En términos simples, crea una asignación entre las clases y las clases de Java en bases de datos relacionales, también entre los tipos de datos de Java a SQL. Hibernate también se puede utilizar para consultar y recuperar datos mediante la generación de llamadas SQL. Por lo tanto, el programador se libera del manejo manual de los conjuntos de resultados y la conversión de objetos. Hibernate se lanza como un marco de código abierto y gratuito distribuido bajo la licencia GNU. Se proporciona una implementación para la API JPA en Hibernate 3.2 y versiones posteriores. Gavin King es el fundador de Hibernate..
¿Cuál es la diferencia entre JPA y Hibernate??
JPA es un marco para administrar datos relacionales en aplicaciones Java, mientras que Hibernate es una implementación específica de JPA (idealmente, JPA e Hibernate no se pueden comparar directamente). En otras palabras, Hibernate es uno de los marcos más populares que implementa JPA. Hibernate implementa JPA a través de las bibliotecas Hibernate Annotation y EntityManager que se implementan sobre las bibliotecas Hibernate Core. Tanto EntityManager como Annotations siguen el ciclo de vida de Hibernate. La versión más reciente de JPA (JPA 2.0) es totalmente compatible con Hibernate 3.5. JPA tiene la ventaja de tener una interfaz que está estandarizada, por lo que la comunidad de desarrolladores estará más familiarizada con ella que Hibernate. Por otro lado, las API nativas de Hibernate pueden considerarse más potentes porque sus características son un superconjunto de la de JPA.