Introducción a la arquitectura de hibernación

Antes de entrar en la arquitectura de Hibernate, veamos por qué Hibernate entró en escena y qué propósito nos resuelve. Hibernate es una herramienta ORM (Object Relational Mapping) para un lenguaje de programación java para desarrollar lógica de persistencia independiente de la base de datos basada en objetos. Hibernate proporciona una capa de abstracción para recuperar y almacenar datos en una base de datos.

¿Por qué hibernar?

JDBC (Java Database Connectivity) depende de la base de datos. Para ser más específico, escribir consultas para que se ejecuten desde su aplicación utilizando JDBC depende de la base de datos con la que esté trabajando. Si trabaja con MySQL u Oracle, sus consultas serán diferentes. Entonces, si en medio de un proyecto necesita cambiar su base de datos, eso también requerirá un cambio de código, y por supuesto no queremos eso. Mientras que, hibernate utiliza un lenguaje de consulta Hibernate independiente de la base de datos. En resumen, hibernate se encarga de la mayor parte de lo que el desarrollador tuvo que hacer con JDBC, por ejemplo. Abrir una conexión a la base de datos, cerrar conexiones, manejar varias excepciones.

Así que entremos en la Arquitectura de Hibernate para comprender mejor cómo Hibernate ha hecho que la persistencia de datos sea mucho más fácil.

Arquitectura hibernada

El concepto principal de cualquier ORM es reemplazar la escritura de consultas SQL específicas de la base de datos con la manipulación de objetos.

Para ponerlo en palabras simples,

  • crea un POJO (Objeto Java antiguo simple)
  • asignar valores a los campos usando setters
  • dile a hibernate que persista esos objetos

Hibernate asigna las clases de Java a las tablas de la base de datos (que también implica la asignación de los tipos de datos de Java a los tipos de datos SQL).

Por lo tanto, elimina la molestia de convertir los campos de Java a tipos de datos compatibles con SQL. Hibernate lo hace por ti.

También alivia al desarrollador del dolor del manejo del conjunto de resultados.

Aplicación Java

Mientras desarrollamos la lógica de persistencia, necesitamos contar con el apoyo de algunos recursos en la aplicación Java. Veamos estos recursos.

El corazón de cualquier aplicación de Hibernate reside en su configuración, que se realiza mediante,

  • Archivo de configuración
  • Archivo de mapeo

Hibernate Configuration File

Definimos las propiedades que le dicen a hibernate con qué base de datos tiene que interactuar y qué controlador JDBC debe usar. Hibernate utiliza un archivo de configuración para obtener toda esta información.

Aunque Hibernate es capaz de generar consultas en la base de datos, podemos especificar el dialecto para ayudarlo a generar un mejor SQL para la base de datos requerida.

Por ejemplo, a continuación se muestran las propiedades que normalmente configurará en una aplicación de arranque por resorte

Hibernate Mapping File

Contiene todas las definiciones de mapeo de clase a tabla. Cada herramienta ORM necesita un archivo de mapeo. Utilizamos las siguientes formas para decirle a Hibernate qué valor de un objeto debe almacenarse en qué columna de la tabla.

  • XML
  • Anotaciones

Sintaxis de un archivo de mapeo xml en primavera,

A continuación se muestra cómo anotamos la variable de instancia que debe asignarse a una columna de una fila en la base de datos.

Clase de dominio

Como sabemos, Hibernate es conocido por desarrollar lógica de persistencia basada en objetos. Por lo tanto, una clase de dominio es un POJO que se asigna a una tabla en la base de datos.

Configuración

Para crear una conexión a la base de datos, Hibernate necesita conocer los detalles de la base de datos, las clases y otros detalles. Un objeto de configuración se crea una vez cuando se inicializa una aplicación. Es el principal responsable del arranque de Hibernate a la aplicación. Un objeto de configuración usa el archivo de configuración y el archivo de mapeo de hibernación para realizar los siguientes pasos:

  • Cargue estos archivos.
  • Comprueba si estos archivos están bien formados y son válidos.
  • Crea metadatos en memoria de estos dos archivos.
  • Devuelve un objeto que contiene estos metadatos.

Fábrica de sesiones

Una fábrica de sesiones se utiliza para crear objetos de sesión. Es creado por el objeto de configuración. Proporciona una capa de abstracción, por lo que no tenemos que preocuparnos por cómo se crea el objeto de sesión. Es una clase de fábrica global segura para subprocesos para crear sesiones. Usando el objeto de configuración, tenemos acceso a los datos en memoria creados a partir del archivo de configuración y mapeo.

A partir de ahí, obtiene las propiedades JDBC: nombre del controlador, URL de fuente de datos, nombre de usuario, contraseña, etc. Al usar estas propiedades, creará objetos de conexión, que representan la conectividad a la base de datos.

Con estas conexiones, se crea un grupo de conexiones. Toda la información del objeto de configuración y el grupo de conexiones se usa para crear y devolver un objeto de sesión. Por lo tanto, un objeto de fábrica de sesión es un objeto pesado. Cada fábrica de sesiones está configurada para trabajar con una base de datos específica utilizando uno de los dialectos de Hibernate especificados.

Sesión

Una cosa a tener en cuenta es que no está relacionado con una sesión de servlet o una sesión de correo java. Una sesión es una puerta de entrada a nuestra base de datos. Crea un puente desde nuestra aplicación a la base de datos. Es creado por la fábrica de sesiones. Toma el objeto de conexión y abre una conexión / sesión a la base de datos, y permite que la aplicación realice operaciones de persistencia en la base de datos.

En una herramienta ORM, realiza todas las operaciones como INSERTAR, ELIMINAR y ACTUALIZAR utilizando semántica orientada a objetos, lo que significa que ya no se refiere a tablas, filas y columnas. Es el trabajo de las sesiones para hacer todas las operaciones de persistencia para usted.

Transacción

Una transacción es un objeto de corta duración que representa una sola unidad de trabajo, como guardar o eliminar un objeto en una tabla de la base de datos. Resume la aplicación de la transacción subyacente realizada mediante JDBC, JTA (Java Transaction API), etc.

Internamente, hiberne utilizando JDBC, JTA, JNDI (Java Naming and Directory Interface) para generar consultas SQL para la base de datos configurada.

Conclusión

En este artículo, vimos cómo la arquitectura en capas de hibernación ayuda a un programador a trabajar con una base de datos sin tener que conocer los detalles de la API subyacente como JDBC, JTA y JNDI. Aprendimos cómo Hibernate nos facilita la vida al manejar la mayor parte del código repetitivo, como abrir / cerrar la conexión a la base de datos. Con suerte, esto le brinda una comprensión clara de la Arquitectura de Hibernate, que lo ayudará a comenzar a usar el Marco de Hibernate en sus aplicaciones.

Artículos recomendados

Esta es una guía de la arquitectura de Hibernate. Aquí discutimos la arquitectura en capas de hibernación junto con la aplicación Java. También puede consultar el siguiente artículo para obtener más información:

  1. ¿Qué es hibernate?
  2. Marco de hibernación
  3. Preguntas de la entrevista de hibernación
  4. ¿Qué es la hibernación de Java?