Hibernate - Arquitectura
Hibernate tiene una arquitectura en capas que ayuda al usuario a operar sin tener que conocer las API subyacentes. Hibernate utiliza la base de datos y los datos de configuración para proporcionar servicios de persistencia (y objetos persistentes) a la aplicación.
A continuación se muestra una vista de muy alto nivel de la arquitectura de aplicaciones de Hibernate.
A continuación se muestra una vista detallada de la arquitectura de aplicaciones de Hibernate con sus importantes clases principales.
Hibernate utiliza varias API de Java existentes, como JDBC, Java Transaction API (JTA) y Java Naming and Directory Interface (JNDI). JDBC proporciona un nivel rudimentario de abstracción de la funcionalidad común a las bases de datos relacionales, lo que permite que casi cualquier base de datos con un controlador JDBC sea compatible con Hibernate. JNDI y JTA permiten que Hibernate se integre con servidores de aplicaciones J2EE.
La siguiente sección ofrece una breve descripción de cada uno de los objetos de clase involucrados en la arquitectura de aplicaciones de Hibernate.
Objeto de configuración
El objeto de configuración es el primer objeto de Hibernate que crea en cualquier aplicación de Hibernate. Por lo general, se crea solo una vez durante la inicialización de la aplicación. Representa un archivo de configuración o propiedades requerido por Hibernate.
El objeto de configuración proporciona dos componentes clave:
Database Connection- Esto se maneja a través de uno o más archivos de configuración compatibles con Hibernate. Estos archivos sonhibernate.properties y hibernate.cfg.xml.
Class Mapping Setup - Este componente crea la conexión entre las clases de Java y las tablas de la base de datos.
Objeto SessionFactory
El objeto de configuración se usa para crear un objeto SessionFactory que a su vez configura Hibernate para la aplicación usando el archivo de configuración provisto y permite crear una instancia de un objeto Session. SessionFactory es un objeto seguro para subprocesos y lo utilizan todos los subprocesos de una aplicación.
SessionFactory es un objeto pesado; normalmente se crea durante el inicio de la aplicación y se guarda para su uso posterior. Necesitaría un objeto SessionFactory por base de datos usando un archivo de configuración separado. Por lo tanto, si está utilizando varias bases de datos, tendrá que crear varios objetos SessionFactory.
Objeto de sesión
Una sesión se utiliza para obtener una conexión física con una base de datos. El objeto Session es liviano y está diseñado para instanciarse cada vez que se necesita una interacción con la base de datos. Los objetos persistentes se guardan y recuperan a través de un objeto de sesión.
Los objetos de sesión no deben mantenerse abiertos durante mucho tiempo porque normalmente no son seguros para subprocesos y deben crearse y destruirse según sea necesario.
Objeto de transacción
Una transacción representa una unidad de trabajo con la base de datos y la mayoría de RDBMS admite la funcionalidad de transacción. Las transacciones en Hibernate son manejadas por un administrador de transacciones subyacente y una transacción (de JDBC o JTA).
Este es un objeto opcional y las aplicaciones de Hibernate pueden optar por no usar esta interfaz, en lugar de administrar las transacciones en su propio código de aplicación.
Objeto de consulta
Los objetos de consulta utilizan una cadena SQL o Hibernate Query Language (HQL) para recuperar datos de la base de datos y crear objetos. Una instancia de consulta se utiliza para vincular parámetros de consulta, limitar el número de resultados devueltos por la consulta y, finalmente, ejecutar la consulta.
Objeto de criterios
Los objetos de criterios se utilizan para crear y ejecutar consultas de criterios orientadas a objetos para recuperar objetos.