Spring と Hibernate で @Lob Lazy Loading と OutOfMemoryErrors を処理するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-11-03 03:46:03
オリジナル
388 人が閲覧しました

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

Spring、Hibernate、Blob の遅延読み込み: ディスカッション

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 例外が回避されます。

追加の考慮事項:

  • 一部のユーザーは、@Lob プロパティの遅延読み込みがすべてのドライバーとデータベースで機能しないと報告しています。
  • @Lob プロパティの遅延読み込みを有効にするには、バイトコード インストルメンテーション (Javassist や CGLib など) の使用が必要になる場合があります。
  • Hibernate のドキュメントには、@Lob プロパティの遅延読み込み動作に関する明確なガイダンスが提供されていないため、開発者の間で混乱や不満が生じる可能性があります。

以上がSpring と Hibernate で @Lob Lazy Loading と OutOfMemoryErrors を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート