Heim  >  Artikel  >  Datenbank  >  Warum schlägt Lazy Loading für @Lob-Felder im Frühling und Ruhezustand fehl?

Warum schlägt Lazy Loading für @Lob-Felder im Frühling und Ruhezustand fehl?

Susan Sarandon
Susan SarandonOriginal
2024-11-02 18:28:02357Durchsuche

Why Does Lazy Loading Fail for @Lob Fields in Spring and Hibernate?

Lazy Loading-Probleme mit @Lob in Spring und Hibernate

In Webanwendungen, die Spring und Hibernate verwenden, sind Datenbankeinträge mit dateibezogenen Daten vorhanden auf einer Webseite gerendert. Während der Prozess bei geringen Datenmengen reibungslos funktioniert, lösen übermäßige Datenmengen einen „OutOfMemoryError“ aus.

Als erster Fehlerbehebungsschritt wurde das Speicherproblem durch Festlegen der „blobField“-Eigenschaften auf „null“ behoben, was darauf hindeutet, dass Lazy Das Laden war trotz der Annotation @Basic(fetch=FetchType.LAZY) ineffektiv.

Erklärungen und Problemumgehungen

Laut Hibernate-Dokumentation sind @Lob-Felder von Natur aus faul und tun dies auch erfordern keine expliziten Lazy-Annotationen. Es wurde jedoch in allen Datenbanken und Treibern inkonsistentes Verhalten gemeldet.

Eine Lösung umfasst Bytecode-Instrumentierungstechniken wie Javassist oder Cglib.

Empfohlene Lösung

Zu Um dieses Problem zuverlässig beheben zu können, wird empfohlen, die Datenzuordnungen neu zu strukturieren. Anstatt Eigenschaften zu verwenden, erstellen Sie „falsche“ Eins-zu-eins-Zuordnungen. Entfernen Sie LOB-Felder aus der Primärklasse, erstellen Sie neue Klassen, die auf dieselbe Tabelle und denselben Primärschlüssel verweisen, aber nur die erforderlichen LOB-Felder enthalten. Markieren Sie diese Zuordnungen als Eins-zu-Eins, Fetch Select und Lazy True. Dieser Ansatz gewährleistet ein verzögertes Laden, während das übergeordnete Objekt in der Sitzung verbleibt.

Das obige ist der detaillierte Inhalt vonWarum schlägt Lazy Loading für @Lob-Felder im Frühling und Ruhezustand fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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