Heim  >  Artikel  >  Datenbank  >  Wie kann ich mit @Lob Lazy Loading und OutOfMemoryErrors im Frühling und Ruhezustand umgehen?

Wie kann ich mit @Lob Lazy Loading und OutOfMemoryErrors im Frühling und Ruhezustand umgehen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-03 03:46:03351Durchsuche

How Can I Handle @Lob Lazy Loading and OutOfMemoryErrors in Spring and Hibernate?

Spring, Hibernate, Blob Lazy Loading: Eine Diskussion

In Hibernate wird die @Lob-Annotation verwendet, um eine persistente Eigenschaft anzugeben, die ein großes Objekt enthält, z ein BLOB oder CLOB. Standardmäßig werden @Lob-Eigenschaften verzögert abgerufen, was bedeutet, dass sie nur dann aus der Datenbank abgerufen werden, wenn tatsächlich im Code auf sie zugegriffen wird.

Das verzögerte Laden von @Lob-Eigenschaften kann durch Reduzierung der Datenmenge zur Verbesserung der Leistung beitragen das in den Speicher geladen wird, wenn ein Objekt aus der Datenbank abgerufen wird. In einigen Fällen kann das verzögerte Laden von @Lob-Eigenschaften jedoch zu OutOfMemoryError-Ausnahmen führen, insbesondere wenn die @Lob-Eigenschaft eine große Datenmenge enthält.

Eine mögliche Problemumgehung für dieses Problem ist die Verwendung eines „falschen“ Eins-zu-eins-Zuordnung anstelle einer @Lob-Eigenschaft. Dabei wird eine neue Klasse erstellt, die auf dieselbe Tabelle und denselben Primärschlüssel wie die ursprüngliche Klasse verweist, aber nur die @Lob-Eigenschaft als Eigenschaft enthält. Die Zuordnung zwischen den beiden Klassen wird als Eins-zu-Eins-Zuordnung mit fetch="select" und lazy="true" angegeben.

Durch die Verwendung einer „falschen“ Eins-zu-Eins-Zuordnung wird das @ Die Lob-Eigenschaft wird nur dann aus der Datenbank abgerufen, wenn tatsächlich im Code darauf zugegriffen wird. Dies kann dazu beitragen, die Leistung zu verbessern und OutOfMemoryError-Ausnahmen zu vermeiden.

Zusätzliche Überlegungen:

  • Einige Benutzer haben berichtet, dass das verzögerte Laden von @Lob-Eigenschaften nicht mit allen Treibern und Datenbanken funktioniert.
  • Die Verwendung von Bytecode-Instrumentierung (wie Javassist oder CGLib) kann erforderlich sein, um das verzögerte Laden von @Lob-Eigenschaften zu ermöglichen bestimmte Treiber und Datenbanken.
  • Die Dokumentation für Hibernate bietet keine klare Anleitung zum verzögerten Ladeverhalten von @Lob-Eigenschaften, was zu Verwirrung und Frustration bei Entwicklern führen kann.

Das obige ist der detaillierte Inhalt vonWie kann ich mit @Lob Lazy Loading und OutOfMemoryErrors im Frühling und Ruhezustand umgehen?. 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