wake-up-neo.com

Klärende Terminologie: "Entfeuchten" einer Entität: Holen von Eigenschaften aus der Datenbank

Im Zusammenhang mit ORM/Lazy Loading von Entitäten verstehe ich den Begriff "Hydration" folgendermaßen:

"Hydratisieren" beschreibt den Vorgang des Auffüllens einiger oder aller zuvor nicht bestückter Attribute einer Entität, die mit verzögertem Laden abgerufen wird.

Beispiel: Die Klasse Author wird aus der Datenbank geladen:

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

Anfangs wird die books-Auflistung nicht aufgefüllt.

Ich verstehe, dass das Laden der books-Sammlung aus der Datenbank als "Hydratisieren" der Sammlung bezeichnet wird.

Ist diese Definition richtig und ist der Begriff "Common Place"? Gibt es einen anderen Begriff, den ich für diesen Prozess verwenden sollte?

59
Marty Pitt

Hydrate begann als Begriff für das Bestücken eines instanziierten (aber leeren) Wertobjekts/Modells aus einer Datenbank (speziell in Hibernate).

Verschiedene andere ORMs und Tools wie BizTalk verwenden Hydrate und andere verwandte Begriffe (z. B. verwendet BizTalk den Begriff Dehydrated, um anzugeben, dass eine Instanz verfügbar ist, aber noch nicht gefüllt ist.)

Ich persönlich bin abgeneigt überflüssige Terminologieüberholungen, bevölkert bedeutet dasselbe, ohne die Sprache neu zu erfinden. Es fügt nichts hinzu und führt zu Verwirrung (allgemeiner erster Gedanke bei Begegnung mit neu erfundenen Begriffen: ist das irgendwie anders und magisch?).

Die BizTalk-Erweiterung dieses Sprachstils, insbesondere Dehydrated, ist redundant. Ich gehe davon aus, dass die Leute nicht vergessen haben, wie sie sagen, empty oder clear?

Hydrated und die dazugehörigen Metaphern sind im Wesentlichen Marketinginstrumente, die entwickelt wurden, um Hibernate von Konkurrenzprodukten zu unterscheiden.

An diesem Punkt haben Hibernate und andere ORM-Produkte diese Begriffe seit vielen Jahren verwendet, daher bleiben Hydrate (und Dehydrate) hier.

107
ocodo

In der Hibernate-Nomenklatur ist hydration, wenn ein JDBC-ResultSet in ein Array von Rohwerten umgewandelt wird:

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

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

Der hydratisierte Zustand wird im aktuell ausgeführten Persistence Context als EntityEntry -Objekt gespeichert, das die Momentaufnahme der Entladezeit der Ladezeit kapselt. Der hydratisierte Zustand wird dann verwendet von:

  • der standardmäßige Mechanismus für die fehlerhafte Überprüfung, der die aktuellen Entitätsdaten mit der Momentaufnahme der Ladezeit vergleicht
  • der Second-Level-Cache, dessen Cache-Einträge aus dem Momentaufnahme der Entitätszeit der Ladezeit erstellt werden

Die inverse Operation heißt dehydration und kopiert den Entitätsstatus in eine SQL-Anweisung INSERT oder UPDATE.

5
Vlad Mihalcea

hydratation ist ein loser Begriff. In unserem Unternehmen verwenden wir "Rehydratisierung", um alle Objekteigenschaften eines gesamten Objektgraphen zu laden. Hier ist ein Beitrag , der über verschiedene Hydratationsgrade spricht (wiederum ist dies eine allgemeine Verwendung, obwohl sie im Zusammenhang mit dem Ruhezustand verwendet wird).

4

Ich denke, der Begriff "Hydrat (s)" im Zusammenhang mit ORM bedeutet einfach, dass der Rahmen Ihnen Objekte gibt. Die Objekte werden also vom ORM "hydratisiert", nachdem die Daten aus dem Laden abgerufen wurden. Der Begriff kann jederzeit angewendet werden, wenn ein ORM-Framework ein Objekt/eine Grafik anzeigt, das im Geschäft dargestellt wird.

2
hvgotcodes

der Begriff Hydratation wird in den Eingeweiden der Hibernate-Bibliothek ausführlich verwendet, um sich auf das Festlegen der Felder eines kürzlich geladenen Objekts zu beziehen, und bezieht sich in der Tat auf die Objektgrafik.
Aber es ist etwas anderes als das Konzept des trägen Ladens, das heißt, dem Benutzer wird ein halb gefülltes Objekt zur Verfügung gestellt, und der Rest kann bei Bedarf geladen werden.
Die Flüssigkeitszufuhr wird immer faul oder eifrig durchgeführt und es wird überwintern.
Lazy Loading dient nur der Bequemlichkeit

ersetzen Sie Hibernate durch den Namen Ihres Orm Ihrer Wahl

0
jpertino

Hydration ist ein allgemeiner ORM-Domänenbegriff, der eine Methode bedeutet, durch die das Abfrageergebnis zurückgegeben wird. Es ist kein Prozess, kein Verb, keine Aktion oder ein Ereignis, sondern ein Substantiv. Daher kann hydrating nur die Verwendung einer Hydratation bedeuten, d. H. Die Verwendung dieser spezifischen Methode , nichts anderes und bringt nichts von selbst, daher sollte niemals verwendet werden . Eine bestimmte Hydratisierung kann ein Objekt instanziieren und füllen, bevor die Referenz zurückgegeben wird. Hydratisieren bedeutet jedoch im Allgemeinen nicht, dass sie gefüllt wird. Unterschiedliche Hydratationen führen zu unterschiedlichen Strukturen:

  • singulärer Skalar
  • array von Skalaren
  • array von Arrays
  • array von Objekten
  • objekt sammelnde Skalare
  • arrays zum Sammeln von Objekten
  • objekt sammeln andere Objekte
  • ...Mehr

Es ist ein ORM-Implementierungsdetail. Einige ORMs bieten mehrere Hydrationen, und Sie können eine auswählen, indem Sie ein Argument an den Query Builder übergeben. Einige geben Ihnen diese Kontrolle nicht und ersetzen sie durch eine Konvention, die versucht, klug zu sein, was normalerweise zu falschen Annahmen führt.

0
cprn