부진한 데이터베이스 작업에 직면하여 추적해 봤습니다. 깊은 엔터티 계층 구조를 사용하여 OneToOne 관계를 열심히 가져오는 문제로 인해 쿼리에 과도한 조인이 발생합니다. 불행하게도 @OneToOne(fetch = FetchType.LAZY) 또는 @ManyToOne(fetch = FetchType.LAZY)에 주석을 달려는 시도는 소용없는 것으로 판명되었습니다.
@ManyToOne(fetch = FetchType.LAZY) 의도한 대로 작동해야 합니다. 클래스 주석을 대체할 수 있는 HQL 쿼리 또는 Criteria API 가져오기 모드의 재정의를 다시 확인하세요. 문제가 지속되면 추가 분석을 위해 코드 샘플을 제공하세요.
@OneToOne이 더 미묘합니다. 관계가 null을 허용하지 않는 경우 다음과 같이 지정하세요.
@OneToOne(optional = false, fetch = FetchType.LAZY)
null을 허용하는 관계의 경우 다음 접근 방식을 고려하세요.
외래 키 추가 열: 소유자 테이블에 외래 키 열을 추가하고 관계를 다음과 같이 매핑합니다. "joined":
@OneToOne(fetch = FetchType.LAZY) @JoinColumn(name = "other_entity_fk") public OtherEntity getOther();
@OneToOne(mappedBy = "other") public OwnerEntity getOwner();
지연 가져오기로 성능 문제를 완화할 수 있지만 주의해서 진행하세요. 과도한 OneToOne 관계로 인해 과도한 조인이 발생하는 경우 데이터 모델 또는 엔터티 관계의 근본적인 구조적 문제를 해결하는 것이 좋습니다.
위 내용은 JPA OneToOne 관계를 게으르게 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!