Die Sitzung in Hibernate ist ein Cache in der ersten Ebene, der als Cache auf Prozessebene (Thread-Balken) verstanden werden kann, der während des Laufs des Prozesses (Thread-Balken) vorhanden ist.
Die Sitzung kann als Objekt verstanden werden, das die Datenbank bedienen kann, und es gibt Methoden zum Betrieb der Datenbank in diesem Objekt.
In Java bezieht sich Cache normalerweise auf den Speicherraum, der durch die Eigenschaften von Java -Objekten, normalerweise einige Attribute für Sammelart, besetzt ist. Eine Reihe von Java -Sammlungen ist in der Implementierungsklassensitzung der Sitzungsschnittstelle definiert, und diese Java -Sammlungen bilden den Sitzungscache.
Im Allgemeinen (mein Verständnis der Sitzung): Sitzung ist der Mittelsmann (ein Objekt) zwischen Hibernate und DB. Es gibt zwei Dinge oder Funktionen in der Sitzung.
(1) Methoden zum Betrieb der Datenbank
(2) In der Sitzung gibt es einige Attribute (Sätze usw.), die diese Attribute verwenden, um die SQL -Sprache zu speichern, die an den DB gesendet werden soll, die Daten, die aus dem DB gefunden wurden, zwischengespeichert werden, usw.
Sitzungscache
Der Sitzungs -Cache besteht aus einer Reihe von Java -Sammlungen. Wenn ein Objekt zum Sitzungs -Cache hinzugefügt wird, wird die Java -Sammlung der Verweis auf dieses Objekt hinzugefügt. Selbst wenn sich die Referenzvariable in der Anwendung nicht mehr auf das Objekt bezieht, sofern der Sitzungscache nicht gelöscht wird, bleibt das Objekt in seinem Lebenszyklus.
Die Rolle des Sitzungscache:
1) Reduzieren Sie die Häufigkeit des Zugriffs auf die Datenbank.
2) Stellen Sie sicher, dass die Objekte im Cache mit den relevanten Datensätzen in der Datenbank synchronisiert werden.
Zeit zum Reinigen von Cache in der Sitzung:
1) Wenn die Transaktionsmethode comment () aufgerufen wird, reinigt die comment () -Methode zunächst den Cache (vorausgesetzt, dass Flushmode.commit/Auto) und dann Transaktionen in die Datenbank vorliegt.
2) Wenn die Anwendungssitzung find () oder iterate () aufruft, wird der Cache zuerst gereinigt, um sicherzustellen, dass die Abfrageergebnisse den neuesten Status des anhaltenden Objekts widerspiegeln können, wenn die Eigenschaften des anhaltenden Objekts in der Cache -Änderung zuerst gereinigt werden.
3) Wenn in der Anwendung die Methode der Sitzung der Sitzung angezeigt wird, wird aufgerufen.
Der Zeitpunkt, in dem der Sitzungsreinigungsmodus den Cache -Operation für Reinigungsmittel ausführt:
Sitzungsschnittstelle
Die Sitzungsschnittstelle ist die wichtigste Schnittstelle, die von Hibernate für Anwendungen für die Manipulation von Datenbanken bereitgestellt wird. Es bietet grundlegende Methoden zum Speichern, Aktualisieren, Löschen und Abfragen.
1.Save (): Fügen Sie dem Cache ein temporäres Objekt hinzu, und es wird zu einem anhaltenden Objekt
-> Wählen Sie den in der Zuordnungsdatei angegebenen Primärschlüsselgenerator aus, um dem persistenten Objekt ein eindeutiges OID zuzuweisen
-> Planen Sie eine Anweisung ein Insert-Anweisung, um den aktuellen Eigenschaftswert des Parameterobjekts in die Anweisung in Einfügen zusammenzustellen. Die Methode SAVE () führt jedoch nicht sofort die SQLINSERT-Anweisung aus und wird nur ausgeführt, wenn die Sitzung den Cache reinigt.
-> Wenn die Eigenschaften des persistenten Objekts nach der Methode Save () geändert werden, wird die Sitzung beim Reinigen des Cache zusätzliche SQLUPDATE-Anweisungen ausführen.
Hinweis: Die Methode Save () wird verwendet, um ein temporäres Objekt zu bestehen!
Wenn Sie ein anhaltendes Objekt an die Save () -Methode übergeben, wird kein Betrieb durchgeführt, redundante Schritte
Wenn ein freies Statusobjekt an die Methode Save () übergeben wird, verarbeitet die Sitzung sie als temporäres Objekt und fügt einen Datensatz erneut in die Datenbank ein, die den Geschäftsanforderungen nicht entspricht!
2. Update (): Nehmen Sie das Kundenobjekt in den Sitzungscache und verwandeln Sie ihn in ein anhaltendes Objekt.
---> Planen Sie eine Aktualisierungsanweisung, die nur dann ausgeführt wird, wenn der Cache gereinigt wird, und die Attributwerte im Parameterobjekt werden bei der Ausführung in die Aktualisierungsanweisung zusammengestellt.
HINWEIS: UPDATE () wandelt ein kostenloses Objekt in ein anhaltendes Objekt um.
Solange das kostenlose Objekt einer Sitzung über die Update () -Methode () zugeordnet ist, wird die Sitzung die von der Aktualisierungsmethode geplante Aktualisierungsanweisung beim Reinigen des Cache ausgeführt.
3.SaveorUpdate (): Es enthält sowohl die Funktionen von Save () als auch update () -Methoden. Wenn der übergebene Parameter ein temporäres Objekt ist, rufen Sie die Speichernmethode auf. Wenn der Parameter ein kostenloses Objekt ist, rufen Sie die Methode update () auf. Wenn der übergebene Parameter ein anhaltendes Objekt ist, kehren Sie direkt zurück.
4.LOAD ()/get (): Sie laden ein persistierendes Objekt aus der Datenbank basierend auf der angegebenen OID. Der Unterschied besteht darin, dass die OID -Methode, wenn kein Datensatz in der Datenbank entspricht, eine ObjectNotFoundException -Ausnahme und die Get () -Methode null zurückgeben.
5.Delete (): Wird verwendet, um Datensätze zu löschen, die Parameterobjekten aus der Datenbank entsprechen. Wenn der übergebene Parameter ein anhaltendes Objekt ist, plant die Sitzung, eine Löschanweisung auszuführen. Wenn der übergebene Parameter ein kostenloses Objekt ist, machen Sie zunächst das freie Objekt, das der Sitzung zugeordnet ist, um es zu einem anhaltenden Objekt zu machen, und planen Sie dann eine Löschanweisung, um beim Reinigen des Cache ausgeführt zu werden.
6.evict (): Löschen Sie das durch den Parameter aus dem Cache angegebene anhaltende Objekt.
Anwendbare Anlässe: Sie möchten nicht, dass die Sitzung die Datenbank nach dem Status des Objekts weiterhin synchron aktualisiert.
Bei Batch -Update oder Stapel -Löschen wird der vom Objekt besetzte Speicher, wenn ein Objekt aktualisiert oder gelöscht wird, rechtzeitig freigegeben. Natürlich haben Batch -Operationen JDBC Priorität.
7.Clear (): Löschen Sie alle anhaltenden Objekte im Cache.
Zusammenfassen
Das obige ist ein schnelles Verständnis des gesamten Inhalts der Sitzung in Hibernate, und ich hoffe, es wird für alle hilfreich sein. Interessierte Freunde können weiterhin auf andere verwandte Themen auf dieser Website verweisen. Wenn es Mängel gibt, hinterlassen Sie bitte eine Nachricht, um darauf hinzuweisen. Vielen Dank an Freunde für Ihre Unterstützung für diese Seite!