Grundlegendes zur Sitzungsverwaltung von Hibernate: openSession() vs. getCurrentSession()
Hibernate bietet zwei Methoden zur Sitzungsverwaltung: openSession() und getCurrentSession( ). Jedes hat spezifische Verwendungszwecke und bietet unterschiedliche Kontrollebenen.
1. hibernate.current_session_context_class:
Diese Eigenschaft bestimmt, wie Hibernate Sitzungen in einem Webanwendungskontext verwaltet. Es kann entweder auf „Thread“ oder „verwaltet“ eingestellt werden.
2. openSession() vs getCurrentSession():
openSession(): Erstellt eine neue Sitzung. Die Sitzung ist an keinen Kontext gebunden und muss nach der Verwendung explizit geschlossen werden. Es wird normalerweise verwendet, wenn Sie vollständige Kontrolle über den Sitzungslebenszyklus benötigen.
getCurrentSession(): Ruft die Sitzung ab, die an den aktuellen Thread oder Kontext gebunden ist. Wenn keine Sitzung vorhanden ist, wird eine neue Sitzung geöffnet und an den aktuellen Kontext gebunden. Diese Methode wird im Allgemeinen in einer Webanwendung bevorzugt, bei der die Sitzung innerhalb einer einzelnen HTTP-Anfrage bestehen bleiben soll.
Zusammenfassend lässt sich sagen, dass getCurrentSession() innerhalb eines Servlet-Filters verwendet werden kann, wenn Sie hibernate.current_session_context_class auf „thread“ setzen oder eine andere Thread-basierte Komponente zum Öffnen und Zugreifen auf eine Sitzung.
3. Sitzungslebensdauer:
Eine Sitzung pro Web-App: Nicht empfohlen, da Sitzungen nicht threadsicher sind und möglicherweise mehrere Anforderungsthreads auf dieselbe Sitzung zugreifen können, was zu Parallelitätsproblemen führt.
Eine Sitzung pro Anfrage: Bevorzugt in Webanwendungen. Dadurch wird sichergestellt, dass jede Anfrage über eine eigene separate Sitzung verfügt, wodurch Bedenken hinsichtlich Parallelität und Thread-Sicherheit beseitigt werden.
Das obige ist der detaillierte Inhalt vonSitzungsverwaltung im Ruhezustand: openSession() vs getCurrentSession() – Welches sollten Sie verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!