Hibernate では、@Lob アノテーションを使用して、次のような大きなオブジェクトを含む永続プロパティを指定します。 BLOB または CLOB。デフォルトでは、@Lob プロパティは遅延フェッチされます。つまり、実際にコードでアクセスされるときにのみデータベースから取得されます。
@Lob プロパティの遅延読み込みは、データ量を削減することでパフォーマンスの向上に役立ちます。これは、オブジェクトがデータベースから取得されるときにメモリにロードされます。ただし、場合によっては、特に @Lob プロパティに大量のデータが含まれている場合、@Lob プロパティの遅延読み込みによって OutOfMemoryError 例外が発生する可能性があります。
この問題に対する考えられる回避策の 1 つは、「フェイク」プロパティを使用することです。 @Lob プロパティの代わりに 1 対 1 マッピングを使用します。これには、元のクラスと同じテーブルと主キーを参照するが、プロパティとして @Lob プロパティのみが含まれる新しいクラスを作成することが含まれます。 2 つのクラス間のマッピングは、fetch="select" および Lazy="true" を使用した 1 対 1 マッピングとして指定されます。
「偽の」1 対 1 マッピングを使用すると、@ Lob プロパティは、コード内で実際にアクセスされるときにのみデータベースから取得されます。これにより、パフォーマンスが向上し、OutOfMemoryError 例外が回避されます。
追加の考慮事項:
以上がSpring と Hibernate で @Lob Lazy Loading と OutOfMemoryErrors を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。