JPA vs Hibernate
Casi todas las aplicaciones empresariales son necesarias para acceder a las bases de datos relacionales regularmente. Pero un problema que enfrentaba tecnologías anteriores (como JDBC) fue el desajuste de la impedancia (diferencia entre tecnologías relacionales orientadas a objetos). Se introdujo una solución para este problema mediante 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 a la gestión de datos relacionales (utilizando la capa de persistencia) en las aplicaciones Java. Hay muchas implementaciones de proveedores de JPA utilizadas dentro de la comunidad de desarrolladores de Java. Hibernate es la implementación más popular de JPA (DataNucleus, Eclipselink y OpenJPA son otros). La versión más nueva de JPA (JPA 2.0) es totalmente compatible con Hibernate 3.5, que se lanzó en marzo de 2010.
Que es JPA?
JPA es un marco para administrar datos relacionales para Java. Se puede utilizar con aplicaciones que utilizan JSE (Plataforma Java, Edición estándar) o JEE (Plataforma Java, Enterprise Edition). Su versión actual es JPA 2.0, que se lanzó el 10 de diciembre de 2009. JPA reemplazó a EJB 2.0 y EJB 1.1 Entity Beans (que fueron muy criticados por ser de peso pesado por la comunidad de desarrolladores de Java). Aunque los frijoles de entidad (en EJB) proporcionaron objetos de persistencia, muchos desarrolladores se usaron para utilizar objetos relativamente livianos ofrecidos por DAO (objetos de acceso a datos) y otros marcos similares. Como resultado, se introdujo JPA y capturó muchas de las características ordenadas de los marcos mencionados anteriormente.
La persistencia como se describe en JPA cubre la API (definida en Javax.Persistencia), JPQL (plataforma Java, edición empresarial) y metadatos requeridos para objetos relacionales. El estado de una entidad de persistencia generalmente se persiste en una mesa. Las instancias de una entidad corresponden a las filas de la tabla de la base de datos relacional. Los metadatos se usan para expresar las relaciones entre entidades. Las anotaciones o los archivos de descriptor XML separados (implementados con la aplicación) se utilizan para especificar metadatos en las clases de entidad. JPQL, que es similar a las consultas SQL, se utilizan para consultar entidades almacenadas.
Que es hibernado?
Hibernate es un marco que se puede utilizar para el mapeo relacional de objetos destinado al lenguaje de programación Java. Más específicamente, es una biblioteca ORM (mapeo relacional de objetos) que puede usarse para asignar el modelo relacional de objetos en el modelo relacional convencional. En términos simples, crea un mapeo entre las clases de Java y las tablas en bases de datos relacionales, también entre Java y Tipos de datos 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 alivia del manejo manual de conjuntos de resultados y objetos de conversión. Hibernate se lanza como un marco gratuito y de código abierto 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 (por lo que idealmente, JPA y 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 bibliotecas de anotación hibernada y entityManager que se implementan sobre las bibliotecas de Hibernate Core. Tanto EntityManager como anotaciones siguen el ciclo de vida de Hibernate. La versión más nueva de JPA (JPA 2.0) es totalmente compatible con Hibernate 3.5. JPA tiene el beneficio de tener una interfaz estandarizada, por lo que la comunidad de desarrolladores estará más familiarizada con ella que Hibernate. Por otro lado, las API nativas de hibernación pueden considerarse más poderosas porque sus características son un superconjunto de la de JPA.