stringtranslate.com

Hibernación (marco de trabajo)

Hibernate ORM (o simplemente Hibernate ) es una herramienta de mapeo objeto-relacional [2] : §1.2.2, [12]  para el lenguaje de programación Java . Proporciona un marco para mapear un modelo de dominio orientado a objetos a una base de datos relacional . Hibernate maneja problemas de desajuste de impedancia objeto-relacional al reemplazar accesos directos y persistentes a la base de datos con funciones de manejo de objetos de alto nivel.

Hibernate es un software libre que se distribuye bajo la Licencia Pública General Reducida GNU 2.1.

La característica principal de Hibernate es la asignación de clases Java a tablas de bases de datos y de tipos de datos Java a tipos de datos SQL . Hibernate también proporciona funciones de consulta y recuperación de datos. Genera llamadas SQL y libera al desarrollador de la manipulación manual y la conversión de objetos del conjunto de resultados.

Cartografía

La asignación de clases Java a tablas de bases de datos se implementa mediante la configuración de un archivo XML o mediante el uso de anotaciones Java . Cuando se utiliza un archivo XML, Hibernate puede generar un código fuente básico para las clases de persistencia. Esto es auxiliar cuando se utilizan anotaciones. Hibernate puede utilizar el archivo XML o las anotaciones Java para mantener el esquema de la base de datos .

Se proporcionan facilidades para organizar relaciones de uno a muchos y de muchos a muchos entre clases. [2] : 140–171  Además de gestionar asociaciones entre objetos, Hibernate también puede gestionar asociaciones reflexivas en las que un objeto tiene una relación de uno a muchos con otras instancias del tipo de clase .

Hibernate admite la asignación de tipos de valores personalizados. Esto permite que se den los siguientes casos:

Definición: Los objetos en una aplicación orientada a objetos siguen los principios de OOP , mientras que los objetos en el back-end siguen los principios de normalización de bases de datos , lo que da como resultado diferentes requisitos de representación. Este problema se denomina " desajuste de impedancia objeto-relacional ". El mapeo es una forma de resolver el problema de desajuste de impedancia objeto-relacional.

El mapeo informa a la herramienta ORM qué objeto de clase Java almacenar en qué tabla de base de datos.

Lenguaje de consulta de Hibernate (HQL)

Hibernate proporciona un lenguaje inspirado en SQL llamado Hibernate Query Language (HQL) para escribir consultas similares a SQL contra los objetos de datos de Hibernate. Las consultas de criterios se proporcionan como una alternativa orientada a objetos a HQL. La consulta de criterios se utiliza para modificar los objetos y proporcionar la restricción para los objetos. [2] : 347–349  HQL (Hibernate Query Language) es la versión orientada a objetos de SQL. Genera consultas independientes de la base de datos, de modo que no hay necesidad de escribir consultas específicas de la base de datos. Sin esta capacidad, cambiar la base de datos requeriría que también se cambiaran las consultas SQL individuales, lo que generaría problemas de mantenimiento.

Persistencia

Hibernate proporciona persistencia transparente para objetos de Java simples (POJO). [2] : 37–38  El único requisito estricto para una clase persistente es un constructor sin argumentos , [2] : 39  aunque no necesariamente public. El comportamiento adecuado en algunas aplicaciones también requiere una atención especial a los métodos equals(Object obj)y hashCode() en las Objectclases. [3] Hibernate recomienda proporcionar un atributo de identificador, y se planea que esto sea un requisito obligatorio en una versión futura. [4]

Las colecciones de objetos de datos se almacenan normalmente en clases de colección de Java, como implementaciones de las interfaces Sety List . También se admiten los genéricos de Java , introducidos en Java 5. Hibernate se puede configurar para cargar de forma diferida las colecciones asociadas. [2] : 289–293  La carga diferida es la opción predeterminada a partir de Hibernate 3.

Los objetos relacionados se pueden configurar para realizar operaciones en cascada de un objeto a otro. Por ejemplo, un Albumobjeto de clase principal se puede configurar para realizar operaciones en cascada de sus operaciones savey deletea sus Trackobjetos de clase secundarios.

Integración

Hibernate se puede utilizar tanto en aplicaciones Java independientes como en aplicaciones Java EE que utilicen servlets , beans de sesión EJB y componentes de servicio JBI . También se puede incluir como una característica en otros lenguajes de programación. Por ejemplo, Adobe integró Hibernate en la versión 9 de ColdFusion (que se ejecuta en servidores de aplicaciones J2EE) con una capa de abstracción de nuevas funciones y sintaxis agregadas en CFML .

Entidades y componentes

En la jerga de Hibernate , una entidad es un objeto independiente en el mecanismo persistente de Hibernate que se puede manipular independientemente de otros objetos. [2] : 62–74  Por el contrario, un componente está subordinado a una entidad y se puede manipular solo con respecto a esa entidad. Por ejemplo, un objeto Álbum puede representar una entidad; pero el objeto Pistas asociado con los objetos Álbum representaría un componente de la entidad Álbum, si se supone que las Pistas solo se pueden guardar o recuperar de la base de datos a través del objeto Álbum. A diferencia de J2EE, Hibernate puede cambiar de base de datos.

Historia

Hibernate fue creado en 2001 por Gavin King y colegas de Cirrus Technologies como una alternativa al uso de beans de entidad de estilo EJB2. El objetivo original era ofrecer mejores capacidades de persistencia que las ofrecidas por EJB2, simplificando las complejidades y complementando ciertas funciones faltantes.

A principios de 2003, el equipo de desarrollo de Hibernate comenzó a lanzar Hibernate2, que ofrecía muchas mejoras significativas con respecto a la primera versión.

Posteriormente, JBoss, Inc. (ahora parte de Red Hat ) contrató a los principales desarrolladores de Hibernate para impulsar su desarrollo.

En 2005, se lanzó la versión 3.0 de Hibernate. Las características principales incluían una nueva arquitectura de interceptor/devolución de llamadas, filtros definidos por el usuario y anotaciones JDK 5.0 (la característica de metadatos de Java ). A partir de 2010 , Hibernate 3 (versión 3.5.0 y posteriores) era una implementación certificada de la especificación Java Persistence API 2.0 a través de un contenedor para el módulo Core que proporciona conformidad con el estándar JSR 317. [5]

En diciembre de 2011 se lanzó Hibernate Core 4.0.0 Final. Incluye nuevas características como compatibilidad con múltiples inquilinos, introducción de ServiceRegistry (un cambio importante en la forma en que Hibernate crea y administra "servicios"), mejor apertura de sesiones desde SessionFactory, integración mejorada a través de org.hibernate.integrator.spi.Integrator y detección automática, compatibilidad con internacionalización , códigos de mensajes en el registro y una mayor distinción entre las clases API, SPI o de implementación. [6]

En diciembre de 2012, se lanzó Hibernate ORM 4.1.9 Final. [7]

En marzo de 2013, se lanzó Hibernate ORM 4.2 Final. [8]

En diciembre de 2013, se lanzó Hibernate ORM 4.3.0 Final. [9] Incluye Java Persistence API 2.1 .

En septiembre de 2015 se lanzó Hibernate ORM 5.0.2 Final. Tiene mejoras en el arranque y compatibilidad con hibernate-java8, hibernate-spatial y Karaf.

En noviembre de 2018 se lanzó Hibernate ORM 5.1.17 Final. Se trata de la versión final de la serie 5.1.

En octubre de 2018, se lanzó Hibernate ORM 5.3 Final, que incluía el almacenamiento en caché de herencia de Java Persistence API 2.2 .

En diciembre de 2018, se lanzó Hibernate ORM 5.4.0 Final. [10]

En octubre de 2022, se lanzó Hibernate ORM 6.1.4 Final. [11]

Interfaz de programación de aplicaciones

La API de Hibernate se proporciona en el paquete Java org.hibernate . [12]

Interfaz org.hibernate.SessionFactory

La org.hibernate.SessionFactoryinterfaz es la versión nativa equivalente del estándar JPA EntityManagerFactory. [2] : 26 

Interfaz org.hibernate.Session

La org.hibernate.Sessioninterfaz [13] representa una sesión de Hibernate, es decir, el punto principal de la manipulación realizada sobre las entidades de la base de datos. Las últimas actividades incluyen (entre otras cosas) la gestión del estado de persistencia ( transitorio , persistente , separado [ aclaración necesaria ] ) de los objetos, la obtención de los persistentes de la base de datos y la gestión de la demarcación de transacciones [ aclaración necesaria ] .

A Sessionestá pensado para durar tanto como la transacción lógica en la base de datos. Debido a esta última característica, Sessionno se espera que las implementaciones sean seguras para subprocesos ni que sean utilizadas por varios clientes.

Componentes de software

El software Hibernate incluye los siguientes componentes: [14]

Véase también

Referencias

  1. ^ "Hibernate Hibernate ORM 6.4.4.Final publicado" . Consultado el 8 de febrero de 2024 .
  2. ^ abcdefghij Bauer, King y Gregory 2015.
  3. ^ "Equals y HashCode". Comunidad JBoss. Archivado desde el original el 2013-12-16 . Consultado el 2013-12-16 .
  4. ^ "Guía del usuario de Hibernate: 2.5.5. Proporcionar atributo de identificador". Comunidad JBoss.
  5. ^ "Hibernate 3.5.0 - Versión final". En relación a...
  6. ^ "Lanzamientos - Hibernate ORM". hibernate.org .
  7. ^ "En relación con... Hibernate ORM 4.1.9.Final Released". Archivado desde el original el 29 de enero de 2013. Consultado el 13 de diciembre de 2012 .
  8. ^ "GC: Hibernate-core-4.2.0.Final.jar - Fuente del proyecto Java de GrepCode". Archivado desde el original el 5 de diciembre de 2014. Consultado el 27 de noviembre de 2014 .
  9. ^ "GC: Hibernate-core-4.3.0.Final.jar - Fuente del proyecto Java de GrepCode". Archivado desde el original el 5 de diciembre de 2014. Consultado el 27 de noviembre de 2014 .
  10. ^ "Lanzamientos - Hibernate ORM". hibernate.org .
  11. ^ Boriero, Andrea. "Hibernate ORM 6.1.4.Final publicado". En relación con . Consultado el 11 de octubre de 2022 .
  12. ^ "Hibernate JavaDocs". docs.jboss.org .
  13. ^ "Sesión (Hibernate JavaDocs)". docs.jboss.org .
  14. ^ "Hibernate: persistencia relacional para Java y .NET". Comunidad JBoss.
  15. ^ "Lanzamiento de Hibernate ORM 4.1.0". Comunidad JBoss.
  16. ^ "HIBERNATE - Persistencia relacional para Java idiomático". Comunidad JBoss.
  17. ^ "No más módulo de anotaciones de hibernación". Comunidad JBoss.
  18. ^ "Anotaciones de Hibernate". Comunidad JBoss.
  19. ^ "hibernate-entitymanager se fusionó con hibernate-core". Comunidad JBoss.
  20. ^ "Hibernate EntityManager". Comunidad JBoss.
  21. ^ "Hibernate Envers: auditoría de entidades sencilla". Comunidad JBoss.
  22. ^ "Hibernate OGM". Comunidad JBoss.
  23. ^ "Fragmentos de hibernación". Comunidad JBoss.
  24. ^ "Búsqueda de Hibernate". Comunidad JBoss.
  25. ^ "Herramientas de Hibernate para Eclipse y Ant". Comunidad JBoss.
  26. ^ "Validador de Hibernate". Comunidad JBoss.
  27. ^ "Generador de metamodelos de Hibernate". Comunidad JBoss.
  28. ^ "NHibernate". NHibernate Forge. Archivado desde el original el 12 de julio de 2012. Consultado el 26 de abril de 2011 .

Bibliografía

Enlaces externos