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