Marco de hibernación - Guía completa del marco de Hibernate

Tabla de contenido:

Anonim

¿Qué es el marco de Hibernate?

Hibernate es un marco de persistencia de Java basado en el mapeo relacional de objetos de código abierto (ORM). Es una herramienta de mapeo ORM en java. Hibernate está diseñado con la necesidad de reducir la complejidad al conectar una base de datos relacional a través de Java. El marco de Hibernate está diseñado para mapear objetos java para implementar programación orientada a objetos en la base de datos relacional. Así es como hibernar se conecta a la base de datos relacional para ejecutar consultas:

  • Hibernate se conecta directamente con la base de datos especificada y utiliza el lenguaje de consulta hibernate (HQL) para ejecutar consultas y asignar resultados de consultas a objetos java.
  • Hibernate utiliza propiedades establecidas en el archivo XML de configuración de Hibernate para asignar resultados de consultas a objetos java.
  • La conexión de la base de datos se crea utilizando una sesión que ayuda a guardar y recuperar el objeto java persistente.
  • La sesión se crea utilizando la interfaz de fábrica de la sesión. En un caso ideal, debería haber solo una fábrica de sesión por base de datos.

Comparación de Hibernate y JDBC

Aquí hay una tabla de comparación que muestra una comparación entre hibernate y JDBC:

HibernarJDBC
Hibernate contiene clases concretas que proporcionan lógica repetitiva.JDBC proporciona solo interfaces y clases abstractas.
Todas las excepciones lanzadas por la hibernación no están marcadas.Todas las clases en JDBC lanzan excepciones marcadas.
No requiere más administración de recursos y lo hace internamente.Requiere más administración de recursos, como abrir y cerrar recursos.
Almacena objetos java directamente.No puede almacenar objetos directamente.
Admite consultas independientes de la base de datos.Admite consultas específicas de la base de datos.
Soporta almacenamiento en caché.No es compatible con el almacenamiento en caché.
Apoye la carga perezosa.No es compatible con la carga diferida.

Hibernate Framework Architecture

Hibernate sigue la arquitectura en capas y tiene las siguientes capas:

  • Capa de aplicación Java
  • Capa de hibernación
  • Capa API de backend
  • Capa de base de datos

La capa de hibernación contiene los siguientes componentes, que son los siguientes:

1. Objeto de configuración de hibernación

Este es el primer objeto que se debe crear para establecer una conexión de base de datos mediante hibernación. Debería crearse idealmente una vez, durante la inicialización de la aplicación. El objeto de configuración proporciona lo siguiente:

  • Conexión a la base de datos: la conexión a la base de datos se establece utilizando uno o más archivos de configuración. Los archivos están hibernados .properties e hibernate.cfg.xml.
  • Asignación: Esto crea una asignación entre las clases de Java y las tablas de bases de datos relacionales.

2. Fábrica de sesiones

El objeto de configuración creado en el paso 1 se usa para crear un objeto de fábrica de sesión que prepara la configuración de hibernación utilizando el archivo de configuración proporcionado y da paso a la creación del objeto de sesión. Dado que la fábrica de sesiones es un objeto pesado, generalmente se crea una vez durante la fase de inicio de la aplicación. Existe la necesidad de un objeto de fábrica de múltiples sesiones en caso de que se deban establecer conexiones a múltiples bases de datos. Además, la fábrica de sesiones es un objeto seguro para subprocesos.

3. Sesión

El objeto de sesión establece una conexión física con la base de datos. Es un objeto ligero y debe crearse cada vez que se requiere interacción con la base de datos. Si un objeto necesita ser persistido o necesita ser recuperado, solo se puede hacer usando el objeto de sesión. El objeto de sesión debe cerrarse tan pronto como se complete la operación requerida porque no son seguros para subprocesos.

4. Transacción

Es un objeto opcional y representa una unidad de trabajo realizada con la base de datos. Un objeto de transacción asegura que todas las operaciones deben ejecutarse o que ninguna de ellas debe ejecutarse. Es un objeto de un solo subproceso y de corta duración.

5. Consultar objeto

Este objeto utiliza lenguaje de consulta estructurado (SQL) o lenguaje de consulta de Hibernate (HQL) para obtener datos de la base de datos e instanciar objetos. Un objeto Query se puede usar para limitar la salida devuelta por la consulta, vincular parámetros de consulta y ejecutar la consulta.

Consultas

Aquí ejecutaremos algunas consultas que aclararán las cosas. Consideremos un empleado de la entidad que tiene la clase estructurada como:

Código:

Package com.edubca.hibernatetest;
@Entity
@Table(name = "EMPLOYEE")
public class Employee implements Serializable
(
private static final long serialVersionUID = -1798070786993123455L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "empID")
private Integer empID;
@Column(name = "NAME")
private String empName;
@Column(name = "SALARY")
private Integer salary;
//Getters and setters
)

Hibernate requiere un archivo XML llamado hibernate.cfg.xml que se parece a:

Código:


com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/hibernatetest
edubca
edubcauser
org.hibernate.dialect.MySQLDialect
create

A continuación se muestra el código para mostrar cómo se realiza la inserción y recuperación en la base de datos mediante hibernación:

Código:

//Create Configuration object
Configuration con=new AnnotationConfiguration().configure(new File("hibernate.cgf.xml"));
// create session factory using configuration
SessionFactory fact=conf.buildSessionFactory();
//get session from session factory
Session session=fact.openSession();
//Instantiate and populate Employee entity object
Employee emp=new Employee();
emp.setempID(1);
emp.setempName(“Yash”);
emp.setSalary(40000);
Employee emp1=new Employee();
emp1.setempID(2);
emp1.setempName(“Aman”);
emp1.setSalary(42000);
//persist emp object
session.save(emp);
//persist emp1 object
session.save(emp1);
//retrieve data from database
Query query=session.createQuery(“from Employee”);
List list= query.list();
For(Employee e : list)(
System.out.println(“Employee with ID ” + e.getempID() + “ has Name ” + e.getempName() + “ has salary ” + e.getsalary());
)

Salida:

Un empleado con ID 1 tiene Nombre Yash tiene un salario de 40000.
Un empleado con ID 2 tiene Nombre Aman tiene un salario de 42000.

Conclusión

En este artículo, hemos cubierto la hibernación en detalle, sobre su arquitectura, comparación con JDBC y ejemplos de código. También notamos que hibernar proporciona una forma simple y eficiente de interactuar con la base de datos.

Artículos recomendados

Esta es una guía del Marco de Hibernate. Aquí discutimos la arquitectura, los componentes y la comparación de hibernate y JDBC con ejemplos de código. También puede consultar los siguientes artículos para obtener más información:

  1. Marcos en Java
  2. ¿Qué son los marcos de automatización de prueba?
  3. Marco HADOOP
  4. .Net Core vs .Net Framework
  5. Gráficos 2D en Java
  6. Lanzamiento vs Lanzamientos | Las 5 principales diferencias que debes saber