Heim > Java > javaLernprogramm > Sollte ich die Open Session in View-Strategie von Hibernate verwenden?

Sollte ich die Open Session in View-Strategie von Hibernate verwenden?

Linda Hamilton
Freigeben: 2024-12-29 04:44:10
Original
164 Leute haben es durchsucht

Should I Use Hibernate's Open Session in View Strategy?

Nachteile der Hibernate Open Session in View-Praxis

Übersicht

Die Open Session in View (OSIV)-Strategie von Hibernate ist im Lieferumfang enthalten mehrere Nachteile, insbesondere in Multi-JVM-Umgebungen und wenn sofortige Transaktions-Commits gewünscht sind. Trotz der Bequemlichkeit, die es in Einzel-JVM-Anwendungen bietet, raten Experten von seiner Verwendung ab.

Probleme mit OSIV

OSIVs Hauptsorge ergibt sich aus seinem unorthodoxen Ansatz beim Datenabruf. Dadurch bleibt der Persistenzkontext während des Renderns der Benutzeroberfläche geöffnet, sodass verzögerte Zuordnungen bei Bedarf initialisiert werden können. Dies führt zu mehreren Nachteilen:

  • Auto-Commit beim Rendern: Nach Abschluss der Service-Layer-Transaktionen werden alle nachfolgenden Anweisungen, die durch das Rendern der Benutzeroberfläche ausgelöst werden, im Auto-Commit-Modus ausgeführt, was unnötig ist Belastung des Datenbankservers.
  • Unscharfe Bedenken: Die Trennung der Bedenken zwischen Service- und UI-Ebenen wird verschwommen, was das Testen und Isolieren erschwert.
  • Potenzial für N 1-Abfragen: Einschränkungen der UI-Ebene können zu N 1-Abfrageproblemen führen und die Leistung beeinträchtigen.
  • Probleme bei der Verbindungslease: OSIV hält die Datenbankverbindung während des gesamten UI-Renderings aufrecht, wodurch der Transaktionsdurchsatz begrenzt und möglicherweise ein Pool verursacht wird Überlastung.

LazyLoadExceptions vermeiden

Anstatt sich auf OSIV zu verlassen, können alternative Strategien eingesetzt werden, um LazyLoadExceptions zu verhindern:

  • Assoziationen abrufen: Assoziationen während der Servicemethode explizit initialisieren Aufrufe.
  • Schreibgeschützter Abruf: Zuordnungslisten als schreibgeschützt markieren, um unerwartete Proxys zu verhindern.
  • Batch-Abruf: Verwenden Sie @BatchSize und FetchMode.SUBSELECT zur Optimierung von Abrufen.
  • Data Access Layer (DAL) Abfragen: Erstellen Sie benutzerdefinierte DAL-Abfragen, die die Datenabrufanforderungen genau definieren.

OSIV in Spring Boot deaktivieren

In Spring Boot wird OSIV aktiviert durch Standard. Um es zu deaktivieren, fügen Sie die folgende Zeile zur Datei application.properties hinzu:

spring.jpa.open-in-view=false
Nach dem Login kopieren

Dadurch wird OSIV deaktiviert, sodass Entwickler LazyLoadExceptions angemessener behandeln können.

Das obige ist der detaillierte Inhalt vonSollte ich die Open Session in View-Strategie von Hibernate verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage