Spring 및 Hibernate의 지연 로딩 Blob 필드
데이터베이스 테이블에서 대규모 바이너리 데이터(BLOB)를 처리할 때 이를 최적화하는 것이 중요합니다. 성능 문제와 메모리 소비를 방지하기 위한 검색입니다. 한 가지 접근 방식은 필요할 때만 데이터를 검색할 수 있는 지연 로딩을 사용하는 것입니다. 그러나 이 기술은 때때로 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>
엔티티 클래스(관련 주석):
<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 중국어 웹사이트의 기타 관련 기사를 참조하세요!