> 데이터 베이스 > MySQL 튜토리얼 > Spring 및 Hibernate에서 @Lob 필드에 대한 지연 로딩이 실패하는 이유는 무엇입니까?

Spring 및 Hibernate에서 @Lob 필드에 대한 지연 로딩이 실패하는 이유는 무엇입니까?

Susan Sarandon
풀어 주다: 2024-11-02 18:28:02
원래의
456명이 탐색했습니다.

Why Does Lazy Loading Fail for @Lob Fields in Spring and Hibernate?

Spring 및 Hibernate에서 @Lob의 지연 로딩 문제

Spring 및 Hibernate를 활용하는 웹 애플리케이션에서 파일 관련 데이터가 포함된 데이터베이스 레코드는 웹페이지에 렌더링됩니다. 데이터 양이 적당할 때 프로세스는 원활하게 작동하지만 과도한 데이터 양은 "OutOfMemoryError"를 트리거합니다.

초기 문제 해결 단계에서 "blobField" 속성을 "null"로 설정하면 메모리 문제가 해결되어 게으른 메모리 문제가 해결되었습니다. @Basic(fetch=FetchType.LAZY) 주석에도 불구하고 로딩이 효과적이지 않았습니다.

설명 및 해결 방법

Hibernate 문서에 따르면 @Lob 필드는 본질적으로 게으르고 작업을 수행합니다. 명시적인 Lazy 주석이 필요하지 않습니다. 그러나 데이터베이스와 드라이버 전체에서 일관되지 않은 동작이 보고되었습니다.

한 가지 솔루션에는 Javassist 또는 Cglib와 같은 바이트코드 계측 기술이 포함됩니다.

권장 솔루션

이 문제를 안정적으로 해결하려면 데이터 매핑을 재구성하는 것이 좋습니다. 속성을 활용하는 대신 "가짜" 일대일 매핑을 만듭니다. 기본 클래스에서 LOB 필드를 제거하고 동일한 테이블과 기본 키를 참조하지만 필요한 LOB 필드만 포함하는 새 클래스를 설정합니다. 이러한 매핑을 일대일, 선택 가져오기 및 지연 true로 표시합니다. 이 접근 방식은 상위 개체가 세션에 남아 있는 동안 지연 로딩을 보장합니다.

위 내용은 Spring 및 Hibernate에서 @Lob 필드에 대한 지연 로딩이 실패하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿