Im Zusammenhang mit ORM / Lazy Loading von Entitäten verstehe ich den Begriff "Hydratation" wie folgt:
"Hydrating" beschreibt den Vorgang des Auffüllens einiger oder aller zuvor nicht aufgefüllten Attribute einer Entität, die durch verzögertes Laden abgerufen wurden.
Beispiel: Klasse Author
wird aus der Datenbank geladen:
@Entity
class Author
{
@Id
long id;
List<Book> books;
}
Die books
Sammlung ist zunächst nicht gefüllt.
Nach meinem Verständnis wird der Vorgang des Ladens der books
Sammlung aus der Datenbank als "Hydratisieren" der Sammlung bezeichnet.
Ist diese Definition korrekt und ist der Begriff alltäglich? Gibt es einen anderen häufigeren Begriff, den ich für diesen Prozess verwenden sollte?
Antworten:
Hydrat begann als Begriff für das Auffüllen eines instanziierten (aber leeren) Wertobjekts / Modells aus einer Datenbank (speziell im Ruhezustand).
Verschiedene andere ORMs und Tools wie BizTalk verwenden Hydrate und andere verwandte Begriffe (z. B. verwendet BizTalk den Begriff Dehydrated, um zu bedeuten, dass eine Instanz verfügbar, aber noch nicht gefüllt ist.)
Persönlich bin ich redundanten Terminologieüberholungen abgeneigt, bevölkert bedeutet dasselbe, ohne die Sprache neu zu erfinden. Es fügt nichts hinzu und führt zu Verwirrung (allgemeiner erster Gedanke bei der Begegnung mit neu erfundenen Begriffen: Ist das irgendwie anders und magisch? ).
Die BizTalk-Erweiterung dieses Sprachstils, insbesondere Dehydrated, ist überflüssig. Ich gehe davon aus, dass die Leute nicht vergessen haben, wie man sagt, leer oder klar ?
Hydrated und die damit verbundenen Metaphern sind im Wesentlichen Marketinginstrumente, die entwickelt wurden, um Hibernate von Konkurrenzprodukten zu unterscheiden.
Zu diesem Zeitpunkt verwenden Hibernate und andere ORM-Produkte diese Begriffe seit vielen Jahren, sodass Hydrat (und Dehydrat) hier bleiben werden.
quelle
Entitätsladezustand
Wenn Sie eine Entität abrufen, versucht Hibernate, sie entweder aus dem Cache der zweiten Ebene oder aus der Datenbank zu laden.
Wenn die Entität nicht im Cache der zweiten Ebene gespeichert ist, wird eine Abfrage ausgeführt und der JDBC
ResultSet
wird in eine Abfrage umgewandeltObject[]
, die die Entitätseigenschaftswerte der Ladezeit enthält.Der Cache der zweiten Ebene speichert dies,
Object[]
wenn eine Entität zwischengespeichert wird. Wenn Sie also eine Entität entweder aus der Datenbank oder aus dem Cache der zweiten Ebene laden, erhalten Sie dasObject[]
Entity-Eigenschaftswert-Array.Der Prozess der Umwandlung des
Object[]
geladenen Zustands in ein Java-Entitätsobjekt wird als Hydratation bezeichnet und sieht folgendermaßen aus:final Object[] values = persister.hydrate( rs, id, object, rootPersister, cols, eagerPropertyFetch, session );
Der geladene Status wird im aktuell ausgeführten Persistenzkontext als EntityEntry- Objekt gespeichert und später für den Standardmechanismus für die schmutzige Überprüfung verwendet , bei dem die aktuellen Entitätsdaten mit dem Ladezeit-Snapshot verglichen werden.
Der geladene Status wird auch als Cacheeintragswert für den Entitätscache der zweiten Ebene verwendet.
Die umgekehrte Operation der Entität an eine Transformation ,
Object[]
die verwendet wird, wenn für die SQL - Parameterwerte BindungINSERT
,UPDATE
oderDELETE
Aussagen heißt Dehydratation .quelle
Flüssigkeitszufuhr 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 Hydratationsstufen spricht (dies ist wiederum eine allgemeine Verwendung, obwohl sie im Zusammenhang mit dem Winterschlaf verwendet werden).
quelle
Ich denke, der Begriff "Hydrat (e)" im Kontext von ORM bedeutet einfach, dass das Framework Ihnen Objekte gibt. Die Objekte werden also vom ORM "hydratisiert", nachdem die Daten aus dem Speicher abgerufen wurden. Der Begriff kann jederzeit angewendet werden, wenn ein ORM-Framework Ihnen ein Objekt / Diagramm liefert, das im Geschäft dargestellt wird.
quelle
Der Begriff Hydratation wird in den Eingeweiden der Bibliothek im Ruhezustand häufig verwendet, um sich auf den Vorgang des Festlegens der Felder eines kürzlich geladenen Objekts zu beziehen, und hängt in der Tat mit der Objektgraphenpopulation zusammen.
Es unterscheidet sich jedoch von dem Konzept des verzögerten Ladens, dh es gibt dem Benutzer ein halb gefülltes Objekt und lässt den Rest bei Bedarf laden.
Die Flüssigkeitszufuhr wird immer faul oder eifrig durchgeführt und es ist Winterschlaf.
Das verzögerte Laden dient nur der Bequemlichkeit
Ersetzen Sie den Ruhezustand durch den Namen Ihrer Wahl
quelle
Hydration ist ein allgemeiner ORM-Domänenbegriff, der eine Methode bezeichnet, mit der das Abfrageergebnis zurückgegeben wird. Es ist kein Prozess, kein Verb, keine Handlung oder kein Ereignis, sondern ein Substantiv. Daher Hydratisieren kann nur eine Trink bedeuten verwenden, dh die Verwendung dieser speziellen Methode , sonst nichts und bringt nichts für sich allein deshalb sollte niemals verwendet werden . Eine bestimmte Hydratation kann ein Objekt instanziieren und bevölkern, bevor seine Referenz zurückgegeben wird. Eine Hydratation im Allgemeinen bedeutet jedoch nicht, sie zu bevölkern. Unterschiedliche Hydratationen führen zu unterschiedlichen Strukturen:
Es ist ein Detail der ORM-Implementierung. Einige ORMs bieten mehrere Hydratationen, und Sie können eine auswählen, indem Sie ein Argument an den Abfrage-Generator übergeben. Andere geben Ihnen diese Kontrolle nicht und ersetzen sie durch Konventionen, die versuchen, klug zu sein, was normalerweise zu falschen Annahmen führt.
quelle