Spring Hibernate - Tensho97/Aprende-a-Aprender GitHub Wiki
Es un framework ORM (mapeo objeto-relacional) desarrollado en Java, y su función principal es facilitar al programador las tareas a la hora de programar y persistir información (guardar información y a la vez poder recuperarla). En Hibernate, se crea una capa entre la base de datos y la aplicación. Se cargan los detalles de la configuración (conexión a la base de datos, las entidades, etc).
Hibernate entonces crea los objetos persistentes que sincronizan los datos entre la aplicación y la base.
Con el fin de conservar los datos a una base de datos, Hibernate crea una instancia de clase de entidad (clase Java mapeado con la capa de base de datos). Este objeto se llama objeto transitorio, ya que aún no están asociados con la sesión o no conservan en una base de datos. Para guardar el objeto de base de datos, se crea la instancia de la interfaz SessionFactory. SessionFactory
es una instancia singleton que implementa el patrón de diseño de Factory. Es un objeto para subprocesos utilizado por todos los hilos de la aplicación. Con TransactionFactory
y ConnectionProvider
se implementan los ajustes de configuración de la base.
Cada conexión de base de datos en Hibernate se crea mediante la creación de una instancia de la interfaz Session, que representa una única conexión con la base de datos. Los objetos Session se crean a partir de los SessionFactory. La conexión a la base de datos se maneja a través de uno o de más archivos de configuración que soporta Hibernate. Éstos son hibernate.properties
e hibernate.cfg.xml
.
El objeto Transaction representa una unidad de trabajo con la base de datos. Es un objeto opcional, se puede o no utilizar esta interfaz.
Para trabajar con la información en la base de datos podemos hacerlo mediante SQL o HQL (Hibernate Query Language) o mediante el objeto Criteria. Con Query ejecutaremos una cadena, y se usa para enlazar parámetros de consulta, limitar el número de resultados y finalmente, ejecutar esa consulta. Criteria se usa para crear y ejecutar consultas con objetos y recuperar esos objetos.
Diferencias entre usar HQL o Criteria:
- HQL es adecuado para ejecutar consultas estáticas. Criteria es adecuado para las dinámicas.
- Criteria es más lento en ejecutar los procesos de consulta que HQL
- Usando Criteria nos cubrimos del SQL Injection, porque genera querys dinámicas, pero en HQL con parámetros fijos no.
- Con HQL podemos hacer operaciones de tipo SELECT y NO-SELECT, pero Criteria solo trabaja con selección de datos. Es decir, no podremos ejecutar un NO-SELECT en Criteria.
Autor : Vanesa