Spring と Hibernate での BLOB フィールドの遅延読み込み
データベース テーブルでラージ バイナリ データ (BLOB) を扱う場合、そのデータを最適化することが重要です。パフォーマンスの問題とメモリの消費を回避するための取得。 1 つのアプローチは、必要な場合にのみデータを取得できる遅延読み込みを使用することです。ただし、この手法は Hibernate と Spring で問題を引き起こす場合があります。
この状況では、データベース、Spring Bean、およびエンティティ クラスを次のように構成しました:
データベース構成(関連部分):
<code class="xml"><bean id="lobHandler" class="org.springframework.jdbc.support.lob.DefaultLobHandler" /> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="lobHandler" ref="lobHandler" /> </bean></code>
Entity Class (関連アノテーション):
<code class="java">@Lob @Basic(fetch = FetchType.LAZY) @Column(name = "BlobField", columnDefinition = "LONGBLOB") @Type(type = "org.springframework.orm.hibernate3.support.BlobByteArrayType") private byte[] blobField;</code>
blobField を遅延としてマークしているにもかかわらず、次のような問題が発生しています。大量のデータを取得するときに OutOfMemoryError が発生する。これは、遅延読み込みメカニズムが期待どおりに動作していないことを示しています。
ドキュメントとユーザー エクスペリエンスに基づいて、BLOB の遅延読み込みに影響を与える可能性のある要因をいくつか示します。
問題を解決するには、次の手順を検討してください。
以上がSpring および Hibernate での BLOB フィールドの遅延読み込みが期待どおりに動作しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。