stringtranslate.com

Hibernar (marco)

Hibernate ORM (o simplemente Hibernate ) es una herramienta de mapeo relacional de objetos [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 los problemas de desajuste de impedancia relacional entre objetos reemplazando los accesos directos y persistentes a la base de datos con funciones de manejo de objetos de alto nivel.

Hibernate es un software gratuito que se distribuye bajo la Licencia pública general reducida GNU 2.1.

La característica principal de Hibernate es el mapeo de clases Java a tablas de bases de datos y el mapeo 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 del manejo manual y la conversión de objetos del conjunto de resultados.

Cartografía

El mapeo 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 código fuente esqueleto para las clases de persistencia. Esto es auxiliar cuando se utilizan anotaciones. Hibernate puede utilizar el archivo XML o las anotaciones de Java para mantener el esquema de la base de datos .

Se proporcionan instalaciones 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 el mapeo de tipos de valores personalizados. Esto hace posibles los siguientes escenarios:

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

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

Hibernar lenguaje de consulta (HQL)

Hibernate proporciona un lenguaje inspirado en SQL llamado Hibernate Query Language (HQL) para escribir consultas similares a SQL en 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 para que no sea necesario 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 Java antiguos (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 atención especial a los métodos equals(Object obj)y hashCode() de las Objectclases. [3] Hibernate recomienda proporcionar un atributo de identificador, y está previsto que sea un requisito obligatorio en una versión futura. [4]

Las colecciones de objetos de datos normalmente se almacenan en clases de colección de Java, como las 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 colecciones asociadas de forma diferida. [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 conectar en cascada sus operaciones savey a sus objetos de clase secundaria.deleteTrack

Integración

Hibernate se puede utilizar tanto en aplicaciones Java independientes como en aplicaciones Java EE que utilizan servlets , beans de sesión EJB y componentes de servicio JBI . También se puede incluir como 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 a CFML .

Entidades y componentes

En la jerga de Hibernate , una entidad es un objeto independiente en el mecanismo persistente de Hibernate que puede manipularse independientemente de otros objetos. [2] : 62–74  Por el contrario, un componente está subordinado a una entidad y sólo puede manipularse 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 iniciado en 2001 por Gavin King con colegas de Cirrus Technologies como una alternativa al uso de beans de entidad estilo EJB2. El objetivo original era ofrecer mejores capacidades de persistencia que las ofrecidas por EJB2; simplificando las complejidades y complementando ciertas características faltantes.

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

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

En 2005, se lanzó la versión 3.0 de Hibernate. Las características clave incluyeron una nueva arquitectura Interceptor/Callback, filtros definidos por el usuario y anotaciones JDK 5.0 (función 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. Esto incluye nuevas características como soporte multiinquilino, introducción de ServiceRegistry (un cambio importante en cómo Hibernate construye y administra "servicios"), mejor apertura de sesiones desde SessionFactory, integración mejorada a través de org.hibernate.integrator.spi.Integrator y descubrimiento automático. , soporte de internacionalización , códigos de mensajes en el registro y una mayor distinción entre API, SPI o clases 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] Cuenta con Java Persistence API 2.1 .

En septiembre de 2015, se lanzó Hibernate ORM 5.0.2 Final. Ha mejorado el arranque, hibernación-java8, hibernación-espacial y compatibilidad con Karaf.

En noviembre de 2018, se lanzó Hibernate ORM 5.1.17 Final. Esta es la versión final de la serie 5.1.

En octubre de 2018, se lanzó Hibernate ORM 5.3 Final. Presentaba 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 Hibernación, 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) gestionar el estado de persistencia ( transitorio , persistente , separado [ aclaración necesaria ] ) de los objetos, recuperar los persistentes de la base de datos y la gestión de la demarcación de la transacción [ aclaración necesaria ] .

Se pretende que A Sessiondure 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]

Ver también

Referencias

  1. ^ "Hibernate Hibernate ORM 6.4.4.Final lanzado" . Consultado el 8 de febrero de 2024 .
  2. ^ abcdefghij Bauer, King y Gregory 2015.
  3. ^ "Iguales y HashCode". Comunidad JBoss.
  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. ^ "Versiones: Hibernar ORM". hibernate.org .
  7. ^ "En relación con... Hibernate ORM 4.1.9.Lanzamiento final". 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 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 GrepCode". Archivado desde el original el 5 de diciembre de 2014 . Consultado el 27 de noviembre de 2014 .
  10. ^ "Versiones: Hibernar ORM". hibernate.org .
  11. ^ Boriero, Andrea. "Lanzamiento de Hibernate ORM 6.1.4.Final". En relación a . Consultado el 11 de octubre de 2022 .
  12. ^ "Hibernar JavaDocs". docs.jboss.org .
  13. ^ "Sesión (Hibernar JavaDocs)". docs.jboss.org .
  14. ^ "Hibernar: 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. ^ "Hibernar anotaciones". Comunidad JBoss.
  19. ^ "hibernate-entitymanager se fusionó con hibernate-core". Comunidad JBoss.
  20. ^ "Hibernar EntityManager". Comunidad JBoss.
  21. ^ "Hibernate Envers: auditoría de entidades sencilla". Comunidad JBoss.
  22. ^ "Hibernar OGM". Comunidad JBoss.
  23. ^ "Hibernar fragmentos". Comunidad JBoss.
  24. ^ "Hibernar búsqueda". Comunidad JBoss.
  25. ^ "Herramientas de hibernación para Eclipse y Ant". Comunidad JBoss.
  26. ^ "Validador de hibernación". Comunidad JBoss.
  27. ^ "Generador de metamodelo de hibernación". Comunidad JBoss.
  28. ^ "NHibernar". NHibernate Forge. Archivado desde el original el 12 de julio de 2012 . Consultado el 26 de abril de 2011 .

Bibliografía

enlaces externos