JPA vs Hibernate

JPA vs Hibernate
Sin comentarios Facebook Twitter Flipboard E-mail

Muchas personas me suelen preguntar que diferencias existen entre JPA ( Java Persistence API) e Hibernate como frameworks de persistencia. La realidad es que la diferencia es mucha ya que JPA es una parte de la especificación de EJB 3 ( JSR 220) . Por lo tanto no existe realmente como framework, sino que es simplemente un documento. Un documento en el cual se especifica los principios básicos de gestión de la capa de persistencia en el mundo de Java EE. Hibernate en cambio si que es algo real y se trata de un framework que gestiona la capa de persistencia a traves de ficheros xml o anotaciones.

hibernatejpa.png

.

Relación entre JPA e Hibernate

La relación que existe entre JPA e Hibernate es que este último implementa como parte de su código la especificación de JPA. Es decir podemos usar Hibernate para construir una capa de persistencia apoyándonos en las definiciones y reglas que la especificación de JPA, aunque no es obligatorio.

jpaimplementahibernate-1.png

Eso sí, 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.

jpazonahibernate.png

Hibernate y NoSQL

Una de las características que Hibernate soporta a día de hoy es la capacidad para trabajar con bases de datos NoSQL, algo que JPA no cubre. Este soporte que trae Hibernate nos permite trabajar con bases de datos tipo MongoDB (orientadas a documentos). Ahora bien, siempre y cuando usemos Hibernate de forma directa y nos apoyemos en las anotaciones propietarias que utiliza para soportar este nuevo tipo de base de datos.

nosql.png

JPA y Flexibilidad

Igual que JPA tiene sus limitaciones también tiene sus ventajas ya que existen varias implementaciones de este standard (varios frameworks) entre las cuales destacan las siguientes.

Esto nos aporta una gran flexibilidad a la hora de abordar que framework de persistencia elegimos para nuestra aplicación. Al ser JPA parte de la especificación de EJB 3.X también nos permite una gran flexibilidad a la hora de elegir nuestro servidor de aplicaciones.

servidores.png

Elegir entre el uso de JPA, el uso de Hibernate u otro framework de persistencia como por ejemplo MyBatis depende mucho del tipo de proyecto que vayamos a abordar.

Comentarios cerrados
Inicio