recursive manytoone lazy initialize fetchtype false example java hibernate jpa orm lazy-loading

java - manytoone - Terminología aclaratoria: "Hidratar" una entidad: Obtener propiedades de la base de datos



lazy hibernate example (5)

En el contexto de la carga ORM / Lazy de entidades, mi comprensión del término "Hidratación" es la siguiente:

"Hidratar" describe el proceso de rellenar algunos o todos los atributos previamente despoblados de una entidad recuperada mediante la carga diferida.

Por ejemplo: class Author se carga desde la base de datos:

@Entity class Author { @Id long id; List<Book> books; }

Inicialmente, la colección de books no está poblada.

Entiendo que el proceso de cargar la colección de books de la base de datos se conoce como "Hidratar" la colección.

¿Es correcta esta definición, y es el término lugar común? ¿Hay algún otro término más común que deba usar para este proceso?


Creo que el término "hidrato (s)" en el contexto de ORM simplemente significa que el marco te da objetos. Entonces los objetos son ''hidratados'' por el ORM después de que los datos son sacados de la tienda. El término se puede aplicar cada vez que un marco ORM le proporciona un objeto / gráfico que se representa en la tienda.


En la nomenclatura de Hibernate, la hidratación ocurre cuando un ResultSet de JDBC se transforma en una matriz de valores sin formato :

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

El estado hidratado se guarda en el contexto de persistencia actualmente en ejecución como un objeto [EntityEntry] [3], que encapsuló la instantánea de la entidad de tiempo de carga. El estado hidratado es utilizado por:

  • el mecanismo de comprobación sucia predeterminado, que compara los datos de la entidad actual con la instantánea del tiempo de carga
  • la memoria caché de segundo nivel, cuyas entradas de caché se crean a partir de la instantánea de la entidad de tiempo de carga

La operación inversa se denomina dehydration y copia el estado de la entidad en una instrucción SQL INSERT o UPDATE.


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

Varios otros ORM y herramientas como BizTalk usan Hydrate y otra terminología relacionada (por ejemplo, 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 de terminología 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 BizTalk de este estilo de lenguaje, específicamente Deshidratado es redundante. Espero que la gente no haya olvidado cómo decir, vaciar o borrar ?

Las metáforas hidratadas y 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 usado estos términos por muchos años, por lo que Hydrate (y deshidratado) llegaron para quedarse.


el término hidratación se usa ampliamente en las entrañas de la biblioteca de hibernación para referirse al proceso de configuración de los campos de un objeto recientemente cargado, y de hecho está relacionado con la población de gráficos de objetos.
pero es diferente del concepto de carga lenta, es decir, darle al usuario un objeto medio lleno y dejar que el resto se cargue a pedido.
la hidratación siempre se realiza, de forma perezosa o ansiosa, y está hibernada.
la carga lenta es solo por conveniencia

reemplace hibernate con el nombre de su elección


la hidratación es un término flexible. En nuestra empresa, usamos "rehidratación" como el término para cargar todas las propiedades del objeto de un gráfico de objetos completo. Aquí hay una publicación que habla sobre varios niveles de hidratación (de nuevo, este es un uso general aunque se usan en el contexto de la hibernación).