Cuando alguien habla de hidratar un objeto, ¿qué significa eso?
Veo un proyecto Java llamado Hydrate en la web que transforma datos entre diferentes representaciones (RDMS a OOPS a XML). ¿Es este el significado general de la hidratación del objeto; transformar datos entre representaciones? ¿Podría significar reconstruir una jerarquía de objetos a partir de una representación almacenada?
Respuestas:
Con respecto al término más genérico hidrato
Hidratar un objeto es tomar un objeto que existe en la memoria, que aún no contiene ningún dato de dominio (datos "reales"), y luego llenarlo con datos de dominio (como de una base de datos, de la red o de un archivo sistema).
De los comentarios de Erick Robertson sobre esta respuesta:
Si no necesita preocuparse por el rendimiento de las ampollas, y no está depurando las optimizaciones de rendimiento que se encuentran en el interior de una API de acceso a datos, entonces probablemente no necesite lidiar explícitamente con la hidratación. Por lo general, usaría la deserialización para poder escribir menos código. Algunas API de acceso a datos no le dan esta opción, y en esos casos también tendría que llamar explícitamente al paso de hidratación usted mismo.
Para un poco más de detalle sobre el concepto de hidratación, vea la respuesta de Erick Robertson sobre esta misma pregunta.
Con respecto al proyecto Java llamado hidrato
Preguntaste sobre este marco específicamente, así que lo examiné.
Por lo que puedo decir, no creo que este proyecto haya usado la palabra "hidrato" en un sentido muy genérico. Veo su uso en el título como sinónimo aproximado de "serialización". Como se explicó anteriormente, este uso no es del todo exacto:
Ver: http://en.wikipedia.org/wiki/Serialization
No puedo encontrar la razón detrás de su nombre directamente en las Preguntas frecuentes sobre hidratos , pero obtuve pistas sobre su intención. Creo que eligieron el nombre "Hydrate" porque el propósito de la biblioteca es similar al popular marco Hibernate similar al sonido , pero fue diseñado con el flujo de trabajo exactamente opuesto en mente.
La mayoría de los ORM, incluido Hibernate, adoptan un enfoque orientado al modelo de objetos en memoria, y la base de datos toma una segunda consideración. En cambio, la biblioteca Hydrate adopta un enfoque orientado al esquema de la base de datos, preservando sus estructuras de datos relacionales y permitiendo que su programa trabaje sobre ellas de manera más limpia.
Hablando metafóricamente, aún con respecto al nombre de esta biblioteca: el hidrato es como "hacer algo listo para usar" (como rehidratar los alimentos secos ). Es un opuesto metafórico de Hibernate , que es más como "guardar algo para el invierno" (como Hibernación Animal ).
La decisión de nombrar el hidrato de la biblioteca, por lo que puedo decir, no estaba relacionada con el término genérico de programación informática "hidrato".
Cuando se utiliza el término genérico de programación informática "hidrato", las optimizaciones de rendimiento suelen ser la motivación (o depurar las optimizaciones existentes). Incluso si la biblioteca admite un control granular sobre cuándo y cómo se rellenan los objetos con datos, el tiempo y el rendimiento no parecen ser la motivación principal para el nombre o la funcionalidad de la biblioteca. La biblioteca parece más preocupada por habilitar el mapeo de extremo a extremo y la preservación del esquema.
fuente
deserialization == instantiation + hydration
@foo
no es necesario cuando se responde al autor de la publicación.La hidratación se refiere al proceso de llenar un objeto con datos. Un objeto que aún no se ha hidratado se ha instanciado y representa una entidad que tiene datos, pero los datos aún no se han cargado en el objeto. Esto es algo que se hace por razones de rendimiento.
Además, el término hidratación se usa cuando se discuten planes para cargar datos de bases de datos u otras fuentes de datos. Aquí hay unos ejemplos:
Se podría decir que un objeto está parcialmente hidratado cuando solo ha cargado algunos de los campos, pero no todos. Esto se puede hacer porque esos otros campos no son necesarios para sus operaciones actuales. Por lo tanto, no hay razón para desperdiciar el ancho de banda y los ciclos de la CPU cargando, transfiriendo y configurando estos datos cuando no se van a usar.
Además, hay algunos ORM, como Doctrine, que no hidratan objetos cuando se instancian, sino solo cuando se accede a los datos en ese objeto. Este es un método que ayuda a no cargar datos que no se van a utilizar.
fuente
Si bien es algo redundante como lo mencionó Merlyn, en mi experiencia se refiere solo a llenar / poblar un objeto, no a instanciarlo / crearlo, por lo que es una palabra útil cuando necesita ser preciso.
fuente
deserialization == instantiation + hydration
).Esta es una pregunta bastante antigua, pero parece que todavía hay confusión sobre el significado de los siguientes términos. Con suerte, esto lo desambiguará.
Hidratar
Cuando vea descripciones que dicen cosas como "un objeto que está esperando datos, está esperando ser hidratado", eso es confuso y engañoso. Los objetos no esperan cosas, y la hidratación es solo el acto de llenar un objeto con datos.
Usando JavaScript como ejemplo:
Cualquier cosa que agregue valores
obj
es "hidratarlo". Solo estoy usandoObject.assign()
en este ejemplo.Dado que los términos "serializar" y "deserializar" también se mencionaron en otras respuestas, aquí hay ejemplos para ayudar a desambiguar el significado de esos conceptos de la hidratación:
Publicar por fascículos
Deserializar
fuente