JPA OneToOne 관계에 대한 지연 가져오기를 선언적으로 구성
JPA 애플리케이션의 일반적인 최적화 중 하나는 관계에 대한 지연 가져오기를 활성화하는 것입니다. 기본적으로 JPA는 OneToOne 연결을 열심히 가져오므로 연결된 엔터티가 항상 필요하지 않은 상황에서 성능 문제가 발생할 수 있습니다. 이 문서에서는 OneToOne 관계를 게으른 관계로 구성하는 방법을 살펴보고, 열성적인 가져오기로 인해 성능 병목 현상이 발생하는 사용자가 직면한 특정 문제를 해결합니다.
먼저, 제한되지 않은(null 허용) 일대일 연관을 명확히 하는 것이 중요합니다. 바이트코드 계측 없이는 프록시할 수 없습니다. 이는 소유 엔터티가 연결 속성에 프록시 또는 null이 포함되어야 하는지 여부를 결정해야 하기 때문입니다. 이는 기본 테이블의 열에만 기초하여 결정할 수 없습니다.
다대일 연결(및 일대일 연결)의 경우 많은 연관), 게으른 가져오기가 가능합니다. 소유 엔터티는 외래 키를 쉽게 확인하여(또는 일대다 연결에 대한 빈 수집 프록시 생성) 요청 시 연결을 채울 수 있습니다.
@ManyToOne 연결에 대한 지연 가져오기를 활성화하려면 @ManyToOne 주석은 fetch=FetchType.LAZY로 주석을 달 수 있습니다. 그러나 쿼리 자체가 이 설정을 덮어쓰지 않는지 확인하는 것이 중요합니다.
@OneToOne 연결의 경우 null을 허용하지 않는 경우 다음과 같이 지정할 수 있습니다.
@OneToOne(optional = false, fetch = FetchType.LAZY)
연결이 null을 허용하고 변경할 수 없는 경우 바이트코드 계측이 유일한 옵션입니다.
다음 경우에 또 다른 시나리오가 발생합니다. @OneToOne 연결은 결과 쿼리에 많은 수의 조인으로 인해 성능 문제를 일으킵니다. 이러한 경우 모델을 검사하고 다대일 측면에 고유한 제약 조건이 있는 일대다 관계를 사용하는 등의 대체 접근 방식 구현을 고려하는 것이 좋습니다.
위 내용은 JPA OneToOne 관계에 대한 지연 가져오기를 어떻게 구성할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!