Was bedeutet es, wenn jemand davon spricht, ein Objekt mit Feuchtigkeit zu versorgen?
Ich sehe ein Java-Projekt namens Hydrate im Web, das Daten zwischen verschiedenen Darstellungen transformiert (RDMS zu OOPS zu XML). Ist dies die allgemeine Bedeutung der Objekthydratation? Daten zwischen Darstellungen transformieren? Könnte es bedeuten, eine Objekthierarchie aus einer gespeicherten Darstellung zu rekonstruieren?
Antworten:
In Bezug auf den allgemeineren Begriff Hydrat
Beim Hydratisieren eines Objekts wird ein im Speicher vorhandenes Objekt genommen, das noch keine Domänendaten ("echte" Daten) enthält, und anschließend mit Domänendaten (z. B. aus einer Datenbank, dem Netzwerk oder einer Datei) gefüllt System).
Aus den Kommentaren von Erick Robertson zu dieser Antwort:
Wenn Sie sich keine Gedanken über Leistungseinbußen machen müssen und keine Leistungsoptimierungen debuggen, die sich in den Interna einer Datenzugriffs-API befinden, müssen Sie sich wahrscheinlich nicht explizit mit der Flüssigkeitszufuhr befassen. Normalerweise verwenden Sie stattdessen die Deserialisierung, damit Sie weniger Code schreiben können. Einige Datenzugriffs-APIs bieten diese Option nicht an. In diesen Fällen müssen Sie den Hydratationsschritt auch explizit selbst aufrufen.
Weitere Informationen zum Konzept der Flüssigkeitszufuhr finden Sie in der Antwort von Erick Robertson auf dieselbe Frage.
In Bezug auf das Java-Projekt namens Hydrat
Sie haben speziell nach diesem Framework gefragt, also habe ich es mir angesehen.
Soweit ich das beurteilen kann, glaube ich nicht, dass dieses Projekt das Wort "Hydrat" in einem sehr allgemeinen Sinne verwendet hat. Ich sehe seine Verwendung im Titel als ungefähres Synonym für "Serialisierung". Wie oben erläutert, ist diese Verwendung nicht ganz korrekt:
Siehe: http://en.wikipedia.org/wiki/Serialization
Ich kann den Grund für ihren Namen nicht direkt in den Hydrate-FAQ finden , aber ich habe Hinweise auf ihre Absicht erhalten. Ich denke, sie haben den Namen "Hydrate" gewählt, weil der Zweck der Bibliothek dem beliebten klangähnlichen Hibernate-Framework ähnelt , aber es wurde mit genau dem entgegengesetzten Workflow entwickelt.
Die meisten ORMs, einschließlich des Ruhezustands, verfolgen einen speicherinternen objektmodellorientierten Ansatz, wobei die Datenbank die zweite Überlegung berücksichtigt. Die Hydrate-Bibliothek verfolgt stattdessen einen datenbankschemaorientierten Ansatz, bei dem Ihre relationalen Datenstrukturen erhalten bleiben und Ihr Programm sauberer darauf arbeiten kann.
Bildlich gesprochen, immer noch in Bezug auf den Namen dieser Bibliothek: Hydrat ist wie "etwas gebrauchsfertig machen" (wie getrocknete Lebensmittel rehydrieren ). Es ist ein metaphorisches Gegenteil von Hibernate , das eher so ist, als würde man "etwas für den Winter weglegen " (wie Animal Hibernation ).
Die Entscheidung, die Bibliothek Hydrate zu nennen, betraf, soweit ich das beurteilen kann, nicht den allgemeinen Computerprogrammierbegriff "Hydrat".
Bei Verwendung des allgemeinen Computerprogrammierbegriffs "Hydrat" sind Leistungsoptimierungen normalerweise die Motivation (oder das Debuggen vorhandener Optimierungen). Selbst wenn die Bibliothek eine detaillierte Kontrolle darüber unterstützt, wann und wie Objekte mit Daten gefüllt werden, scheinen das Timing und die Leistung nicht die Hauptmotivation für den Namen oder die Funktionalität der Bibliothek zu sein. Die Bibliothek scheint mehr daran interessiert zu sein, End-to-End-Mapping und Schemaerhaltung zu ermöglichen.
quelle
deserialization == instantiation + hydration
@foo
wird nicht benötigt, wenn Sie auf den Autor des Beitrags antworten.Unter Flüssigkeitszufuhr versteht man den Vorgang des Füllens eines Objekts mit Daten. Ein Objekt, das noch nicht hydratisiert wurde, wurde instanziiert und stellt eine Entität dar, die Daten enthält, die Daten jedoch noch nicht in das Objekt geladen wurden. Dies geschieht aus Leistungsgründen.
Darüber hinaus wird der Begriff Hydratation verwendet, wenn Pläne zum Laden von Daten aus Datenbanken oder anderen Datenquellen erörtert werden. Hier sind einige Beispiele:
Man könnte sagen, dass ein Objekt teilweise hydratisiert ist, wenn Sie nur einige der Felder in das Objekt geladen haben, aber nicht alle. Dies kann erfolgen, da diese anderen Felder für Ihre aktuellen Vorgänge nicht erforderlich sind. Es gibt also keinen Grund, Bandbreite und CPU-Zyklen beim Laden, Übertragen und Einstellen dieser Daten zu verschwenden, wenn sie nicht verwendet werden.
Darüber hinaus gibt es einige ORMs wie Doctrine, die Objekte nicht hydratisieren, wenn sie instanziiert werden, sondern nur, wenn auf die Daten in diesem Objekt zugegriffen wird. Dies ist eine Methode, die hilft, keine Daten zu laden, die nicht verwendet werden sollen.
quelle
Während es, wie Merlyn erwähnte, eine etwas überflüssige Umgangssprache ist, bezieht es sich meiner Erfahrung nach nur auf das Füllen / Auffüllen eines Objekts, nicht auf das Instanziieren / Erstellen eines Objekts. Daher ist es ein nützliches Wort, wenn Sie präzise sein müssen.
quelle
deserialization == instantiation + hydration
).Dies ist eine ziemlich alte Frage, aber es scheint immer noch Verwirrung über die Bedeutung der folgenden Begriffe zu geben. Hoffentlich wird dies eindeutig sein.
Hydrat
Wenn Sie Beschreibungen sehen, die Dinge wie "Ein Objekt, das auf Daten wartet, wartet darauf, hydratisiert zu werden" sagen, ist das verwirrend und irreführend. Objekte warten nicht auf Dinge, und Flüssigkeitszufuhr ist nur das Füllen eines Objekts mit Daten.
Verwenden Sie JavaScript als Beispiel:
Alles, was Werte hinzufügt,
obj
"hydratisiert" es. Ich benutze nurObject.assign()
in diesem Beispiel.Da die Begriffe "serialisieren" und "deserialisieren" auch in anderen Antworten erwähnt wurden, sind hier Beispiele, um die Bedeutung dieser Konzepte von der Hydratation zu unterscheiden:
Serialisieren
Deserialisieren
quelle