Qu'est-ce que cela signifie d'hydrater un objet?

Quand quelqu'un parle d'hydrater un objet, qu'est-ce que cela signifie?

Je vois un projet Java appelé Hydrate sur le web qui transforme les données entre différentes représentations (RDMS en Oops en XML). Est-ce la signification générale de l'hydratation des objets; transformer les données entre les représentations? Cela pourrait-il signifier reconstruire une hiérarchie d'objets à partir d'une représentation stockée?

136
demandé sur Jim 2011-08-09 07:41:40

3 réponses

Par rapport au terme plus Générique hydrate

L'hydratation d'un objet consiste à prendre un objet qui existe en mémoire, qui ne contient pas encore de données de domaine (données"réelles"), puis à le remplir avec des données de domaine (par exemple à partir d'une base de données, du réseau ou d'un système de fichiers).

D'après les commentaires D'Erick Robertson sur cette réponse:

Désérialisation == instanciation + hydratation

Si vous n'avez pas besoin de vous soucier de cloques performance, et vous ne déboguez pas les optimisations de performance qui sont dans les internes d'une API d'accès aux données, alors vous n'avez probablement pas besoin de traiter l'hydratation explicitement. Vous utilisez généralement désérialisation à la place afin que vous puissiez écrire moins de code. Certaines API d'accès aux données ne vous donnent pas cette option, et dans ces cas, vous devrez également appeler explicitement l'étape d'hydratation vous-même.

Pour un peu plus de détails sur le concept D'hydratation, voir Erick Robertson répondez à cette même question.

En ce qui concerne le projet Java appelé hydrate

Vous avez posé des questions sur ce cadre en particulier, alors j'ai regardé dedans.

Autant que je sache, je ne pense pas que ce projet ait utilisé le mot "hydrate" dans un sens très générique. Je vois son utilisation dans le titre comme un synonyme approximatif de "sérialisation". Comme expliqué ci-dessus, cette utilisation n'est pas tout à fait exacte:

Voir: http://en.wikipedia.org/wiki/Serialization

Traduire les structures de données ou l'état de l'objet dans un format qui peut être stocké [...] et reconstruit plus tard dans le même ou un autre environnement informatique.

Je ne trouve pas la raison derrière leur nom directement sur la FAQ Hydrate , mais j'ai des indices sur leur intention. Je pense qu'ils ont choisi le nom "Hydrate" parce que le but de la Bibliothèque est similaire au son-alike populaire Hibernate framework , mais il a été conçu avec le flux de travail exact opposé à l'esprit.

La plupart des ORM, Hibernate inclus, adoptent une approche orientée objet-modèle en mémoire, la base de données prenant une seconde considération. La bibliothèque Hydrate adopte plutôt une approche orientée base de données-schéma, préservant vos structures de données relationnelles et laissant votre programme travailler plus proprement.

Métaphoriquement parlant, toujours en ce qui concerne le nom de cette bibliothèque: Hydrate est comme "faire quelque chose prêt à l'emploi "( comme réhydrater Les Aliments Séchés ). C'est un opposé métaphorique de Hibernate, qui ressemble plus à "ranger quelque chose pour l'hiver" (comme hibernation animale).

La décision de nommer la bibliothèque Hydrate, pour autant que je sache, ne concernait pas le terme générique de programmation informatique "hydrate".

Lorsque vous utilisez le terme générique de programmation informatique "hydrate", les optimisations de performances sont généralement motivation (ou débogage des optimisations existantes). Même si la bibliothèque prend en charge un contrôle granulaire sur le moment et la façon dont les objets sont remplis de données, le calendrier et les performances ne semblent pas être la principale motivation pour le nom ou la fonctionnalité de la bibliothèque. La bibliothèque semble plus préoccupée par l'activation du mappage de bout en bout et de la préservation du schéma.

80
répondu Merlyn Morgan-Graham 2017-05-23 12:26:33

L'hydratation fait référence au processus de remplissage d'un objet avec des données. Un objet qui n'a pas encore été hydraté a été instancié et représente une entité qui ne dispose de données, mais les données n'ont pas encore été chargé dans l'objet. C'est quelque chose qui est fait pour des raisons de performances.

De plus, le terme hydratation est utilisé pour discuter des plans de chargement de données à partir de bases de données ou d'autres sources de données. Voici quelques exemples:

Vous pourriez dire qu'un objet est partiellement hydraté lorsque vous n'avez chargé que certains champs, mais pas tous. Cela peut être fait parce que ces autres champs ne sont pas nécessaires pour vos opérations en cours. Il n'y a donc aucune raison de gaspiller la bande passante et les cycles CPU pour charger, transférer et définir ces données lorsqu'elles ne seront pas utilisées.

De plus, il existe certains ORM, tels que Doctrine, qui n'hydratent pas les objets lorsqu'ils sont instanciés, mais uniquement lorsque les données sont accédées dans cet objet. Ce est une méthode qui aide à ne pas charger les données qui ne vont pas être utilisées.

163
répondu Erick Robertson 2013-12-26 15:21:21

Bien qu'il soit un peu vernaculaire redondant comme Merlyn l'a mentionné, dans mon expérience, il se réfère seulement {[2] } au remplissage / remplissage d'un objet, pas à l'instanciation/création, donc c'est un mot utile quand vous devez être précis.

35
répondu J. Dimeo 2013-04-25 03:56:49