Der Hauptunterschied besteht darin, ob es sich um eine verzögerte Belastung handelt.
Die Lastmethode greift nicht sofort auf die Datenbank auf, und wenn der Datensatz zum Laden nicht vorhanden ist, gibt die Lastmethode ein nicht initialisiertes Proxy -Objekt zurück.
Methode erhalten
Greifen Sie immer sofort auf die Datenbank zu. Wenn der Datensatz versuchte, nicht zu laden, gibt es NULL direkt zurück
Es gibt zwei Methoden in Hibernate, die sehr ähnlich sind. Nachdem ich es überprüft hatte, fand ich
Es gibt zwei sehr ähnliche Methoden in Hibernate, Get () und Load (). Sie können beide Daten aus der Datenbank über die angegebene Entitätsklasse und ID lesen und die entsprechende Instanz zurückgeben. Hibernate macht jedoch nicht genau die gleichen Methoden. Der Unterschied zwischen ihnen ist:
Holen Sie sich die Datenbank direkt abfragen. Wenn es nicht gefunden werden kann, kehrt es NULL zurück. Die Last wird zuerst aus dem Speicher geladen. Wenn es vorher nicht geladen oder abfragt wurde, wechseln Sie die Datenbank ab.
Der grundlegende Unterschied zwischen der GET -Methode und der Lastmethode in Hibernate besteht darin, dass Hibernate, wenn Sie die Lastmethode verwenden, der Ansicht ist, dass das Objekt (Datenbankdatensatz), das der ID entspricht, in der Datenbank vorhanden sein muss, sodass es mit Vertrauen verwendet werden kann und das Proxy zum Verzögerungsladen des Objekts verwenden kann. Die Datenbank wird nur abgefragt, wenn andere Attributdaten im Objekt verwendet werden. Wenn der Datensatz jedoch in der Datenbank nicht vorhanden ist, gibt es keine Möglichkeit, und Sie können nur Ausnahmen werfen. Die Lastmethode löst Ausnahmen aus, dass bei Verwendung der Daten des Objekts die Ausnahmen ausgeworfen werden, wenn die Daten in der Datenbank nicht vorhanden sind, und nicht beim Erstellen dieses Objekts. Da der Cache in der Sitzung eine sehr billige Ressource für Hibernate ist, überprüfen wir beim Laden zunächst den Sitzungscache, um festzustellen, ob das der ID entsprechende Objekt entspricht. Wenn es nicht existiert, wird ein Proxy erstellt. Wenn Sie also wissen, dass die ID einen entsprechenden Datensatz in der Datenbank haben muss, können Sie die Lastmethode verwenden, um das faule Laden zu erreichen. Für die GET -Methode bestätigt Hibernate, ob die der ID entsprechenden Daten vorhanden sind. Sehen Sie zuerst im Sitzungscache nach und schauen Sie dann im sekundären Cache nach. Wenn es noch nicht geschehen ist, suchen Sie in der Datenbank nach und wenn sie nicht in der Datenbank geschehen ist, geben Sie NULL zurück.
2. Die GET -Methode fragt zuerst den Sitzungs -Cache ab, falls nicht, den sekundären Cache und schließlich die Datenbank abfragt. Im Gegenteil, wenn die Lastmethode erstellt wird, wird der Sitzungscache zuerst Abfrage und wenn kein Agent erstellt wird, werden der sekundäre Cache und die Datenbank nur abfragt, wenn die Daten tatsächlich verwendet werden.
Kurz gesagt, für den grundlegenden Unterschied zwischen Get und Last ist Hibernate in einem Wort der Ansicht, dass die Daten in der Datenbank für die Lastmethode vorhanden sind, und kann den Proxy verwenden, um das Laden mit Vertrauen zu verzögern. Wenn während der Verwendung ein Problem gefunden wird, kann es nur Ausnahmen werfen; Für die GET -Methode muss Hibernate die tatsächlichen Daten erhalten, andernfalls wird NULL zurückgegeben.
1. Wenn keine Aufzeichnung, die den Kriterien erfüllt, gefunden wird, gibt die Get () -Methode NULL zurück. Und load () meldet eine ObjectNotFoundeCception.
2. Die Methode load () kann die Proxy -Klasse -Instanz einer Entität zurückgeben, während Get () immer nur die Entitätsklasse zurückgibt.
3. Die Methode load () kann die vorhandenen Daten im sekundären Cache und im internen Cache vollständig nutzen, während die GET () -Methode nur im internen Cache sucht. Wenn keine entsprechenden Daten gefunden werden, wird der sekundäre Cache übersprungen und SQL wird direkt aufgerufen, um die Suche abzuschließen.