Hibernate es un marco Java ORM (mapeo relacional de objetos) de código abierto, no invasivo y liviano que se utiliza para desarrollar una lógica de persistencia que es independiente del software de la base de datos. En JDBC , para desarrollar lógica de persistencia, tratamos con tipos primitivos. Mientras que en el marco de Hibernate usamos Objetos para desarrollar una lógica de persistencia que es independiente del software de la base de datos. Podemos hacer una lógica de persistencia independiente en todos los JAVA, JEE . La lógica de persistencia significa almacenar y procesar los datos para un uso prolongado.
Un marco ORM (mapeo relacional de objetos) simplifica la creación de datos, la manipulación de datos y el acceso a datos. Es una técnica de programación que asigna el objeto a los datos almacenados en la base de datos. Utiliza internamente la API de JDBC para interactuar con la base de datos.
Características destacadas de Hibernate
- Es un marco de código abierto y está disponible para que todos lo usen.
- Se puede usar solo o podemos usar Hibernate con otra tecnología y marco de Java.
- La clase de Hibernate no necesita implementar las interfaces de la API de Hibernate y no necesita extenderse desde las clases de la API de Hibernate .
Clases de generador de hibernación
Una clase de generador se utiliza para generar una ID para un objeto, que se insertará en la base de datos como clave principal. El ID es un identificador único para los objetos de la clase persistente. Podemos usar cualquier clase de generador en nuestra aplicación según nuestros requisitos. Hibernate proporciona una etiqueta <generator> para representar el generador. Sin embargo, es un subelemento de <id>. Hay un nombre de acceso directo para cada clase de generador predefinido , por lo que la etiqueta <generator> tiene que configurarse con este nombre de acceso directo.
Todas las clases generadoras de hibernación implementan la interfaz hibernate.id.IdentifierGenerator y anulan el método de generación (SessionImplementor, Object) para generar el identificador o el valor de la clave principal. Podemos crear nuestras propias clases generadoras implementando la interfaz IdentifierGenerator y anulando el método generate().
Tipos de clases de generadores
Hibernate proporciona muchas clases de generadores predefinidos . Algunas de las clases generadoras predefinidas importantes en hibernate son:
- asignado
- extranjero
- hilo
- identidad
- incremento
- nativo
- secuencia
- uuid
1. generador asignado
El generador asignado es el generador predeterminado. Por defecto, hibernate considera asignado como un generador y asignado es un nombre abreviado dado para la clase Asignada . Esta clase devuelve la misma identificación establecida por nosotros a Hibernate, que a su vez almacena un objeto con esa identificación en la base de datos.
Sintaxis en el archivo hbm.xml:
<mapeo de hibernación>
<clase…>
<id nombre=”studentId” columna=”sid”>
<clase de generador=”asignado”></generador>
</id>
</clase>
</hibernate-mapeo>
2. generador extranjero
Foreign es un nombre abreviado dado para la clase ForeignGenerator . El ForeignGenerator solo es adecuado para relaciones uno a uno. Devuelve la identificación del objeto principal como la identificación del objeto secundario.
Sintaxis en el archivo hbm.xml:
<mapeo de hibernación>
<clase…>
<id nombre=”studentId” columna=”sid”>
<generador class=”extranjero”></generador>
</id>
</clase>
</hibernate-mapeo>
3. generador de hilos
hilo es un nombre abreviado para la clase TableHiloGenerator . Al configurar la clase del generador hilo en el archivo hbm.xml , pasamos «tabla», «columna» y «max_lo» como parámetros.
Sintaxis en el archivo hbm.xml:
<mapeo de hibernación>
<clase…>
<id nombre=”studentId” columna=”sid”>
<clase generador=”hilo”>
<param name=»tabla»>documento</param>
<param name=”columna”>columna</param>
<param nombre=”max_lo”>13210</param>
</generador>
</id>
</clase>
</hibernate-mapeo>
El valor predeterminado de los tres parámetros anteriores proporcionados por Hibernate son:
- tabla = hibernate_unique_key
- columna = siguiente_hola
- max_lo = 32767
4. generador de identidad
identidad es un nombre abreviado dado para la clase IdentityGenerator . Lee un algoritmo de columna de incremento automático de la base de datos y toma ese valor y lo devuelve como id para hibernar. El generador de identidad admite bases de datos como Sybase, My SQL, MS SQL Server, DB2 y HypersonicSQL , pero no admite la base de datos Oracle porque no hay una funcionalidad de incremento automático en la base de datos Oracle . Por lo tanto, el generador de identidad puede considerarse como un generador dependiente de la base de datos.
Sintaxis en el archivo hbm.xml:
<mapeo de hibernación>
<clase…>
<id nombre=”studentId” columna=”sid”>
<clase generador=”identidad”></generador>
</id>
</clase>
</hibernate-mapeo>
5. generador de incrementos
Un incremento es un nombre abreviado dado para la clase IncrementGenerator . La clase IncrementGenerator lee el valor máximo del ID existente en la tabla de la base de datos y luego lo incrementa en uno y devuelve el valor del ID a Hibernate.
Sintaxis en el archivo hbm.xml:
<mapeo de hibernación>
<clase…>
<id nombre=”studentId” columna=”sid”>
<clase generador=”incremento”></generador>
</id>
</clase>
</hibernate-mapeo>
6. generador nativo
native es el nombre abreviado dado para la clase NativeGenerator . Si la base de datos admite un generador de identidad , entonces actúa como identidad ; de lo contrario, verificará el soporte de la base de datos de otros generadores. Selecciona identidad, secuencia o hilo dependiendo de las capacidades de la base de datos subyacente.
Sintaxis en el archivo hbm.xml:
<mapeo de hibernación>
<clase…>
<id nombre=”studentId” columna=”sid”>
<clase de generador=”nativo”></generador>
</id>
</clase>
</hibernate-mapeo>
7. generador de secuencias
secuencia es un nombre abreviado dado para la clase SequenceGenerator . Lee el siguiente valor de una secuencia de base de datos y luego devuelve ese valor como id a la hibernación.
Sintaxis para crear una secuencia en la base de datos:
crear secuencia <nombre_secuencia> comenzar con <número_aleatorio> incrementar en <número_aleatorio>
Sintaxis en el archivo hbm.xml:
<mapeo de hibernación>
<clase…>
<id nombre=”studentId” columna=”sid”>
<clase generador=”secuencia”>
<param name=”secuencia”>fuente_de_datos_secuencial</param>
</generador>
</id>
</clase>
</hibernate-mapeo>
8. generador de fluidos
uuid es un nombre abreviado dado para la clase AbstractUUIDGenerator . Genera un identificador de string único y vuelve a hibernar en función de la dirección IP de la máquina , la hora de inicio de JVM, la hora del sistema y el valor del contador en JVM.
Sintaxis en el archivo hbm.xml:
<mapeo de hibernación>
<clase…>
<id nombre=”studentId” columna=”sid”>
<clase generador=”uuid”> </generador>
</id>
</clase>
</hibernate-mapeo>