Spring 和Hibernate 中的延遲載入Blob 欄位
處理資料庫表中的大型二進位資料(BLOB) 時,最佳化它們非常重要檢索以避免效能問題和記憶體消耗。一種方法是使用延遲加載,它允許僅在需要時檢索資料。然而,這種技術有時會給 Hibernate 和 Spring 帶來挑戰。
在您的情況下,您已如下設定資料庫、Spring beans 和實體類別:
資料庫配置(相關部分):
<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>
實體類別(相關註解):
<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中文網其他相關文章!