Saltar al contenido

Aclarar la terminología: ¿qué significa “hidratar” una entidad JPA o Hibernate cuando se obtiene la entidad de la base de datos?

Solución:

Hydrate comenzó como un término para poblar un objeto de valor / modelo instanciado (pero vacío) de una base de datos, (específicamente en Hibernate).

Varios otros ORM y herramientas como BizTalk usan Hydrate y otra terminología relacionada (p. Ej., BizTalk usa el término Deshidratado para indicar que una instancia está disponible pero aún no está poblada).

Personalmente, soy reacio a las revisiones terminológicas redundantes, poblado significa lo mismo, sin reinventar el lenguaje. No agrega nada y conduce a la confusión (primer pensamiento común al encontrar términos reinventados: ¿Es esto de alguna manera diferente y mágico?).

La extensión de BizTalk de este estilo de lenguaje, específicamente Deshidratado es redundante. Espero que la gente no haya olvidado cómo decir vacío, o claro?

Hidratado y sus metáforas relacionadas son esencialmente herramientas de marketing, inventadas para diferenciar a Hibernate de los productos de la competencia.

En este punto, Hibernate y otros productos ORM han utilizado estos términos durante muchos años, por lo que Hydrate (y Deshydrate) están aquí para quedarse.

Estado de carga de la entidad

Cuando busca una entidad, Hibernate intentará cargarla desde la caché de segundo nivel o desde la base de datos.

Estado de carga de la entidad

Si la entidad no está almacenada en la caché de segundo nivel, se ejecuta una consulta y el JDBC ResultSet se transforma en un Object[] que contiene los valores de propiedad de la entidad de tiempo de carga.

La caché de segundo nivel almacena esto Object[] al almacenar en caché una entidad. Entonces, al cargar una entidad desde la base de datos o desde la caché de segundo nivel, obtendrá el Object[] matriz de valor de propiedad de entidad.

El proceso de transformación del Object[] El estado cargado en un objeto de entidad Java se llama hidratación, y tiene el siguiente aspecto:

final Object[] values = persister.hydrate(
    rs, id, object,
    rootPersister, cols, eagerPropertyFetch, session
);

El estado cargado se guarda en el contexto de persistencia que se está ejecutando actualmente como un objeto EntityEntry, y se usará más adelante para el mecanismo de verificación sucio predeterminado, que compara los datos de la entidad actual con la instantánea del tiempo de carga.

El estado cargado también se utiliza como valor de entrada de caché para el caché de entidad de segundo nivel.

La operación inversa de transformar la entidad en un Object[] que se usa al vincular valores de parámetros SQL para INSERT, UPDATE o DELETE declaraciones se llama deshidración.

la hidratación es un término vago. En nuestra empresa utilizamos “rehidratación” como el término para cargar todas las propiedades de un objeto gráfico completo. Aquí hay una publicación que habla sobre varios niveles de hidratación (nuevamente, este es un uso general, aunque lo están usando en el contexto de la hibernación).

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *