>Java >java지도 시간 >JPA OneToOne 관계를 게으르게 만드는 방법은 무엇입니까?

JPA OneToOne 관계를 게으르게 만드는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-20 05:53:13787검색

How to Make JPA OneToOne Relationships Lazy?

JPA 일대일 관계를 어떻게 게으르게 만들 수 있나요?

부진한 데이터베이스 작업에 직면하여 추적해 봤습니다. 깊은 엔터티 계층 구조를 사용하여 OneToOne 관계를 열심히 가져오는 문제로 인해 쿼리에 과도한 조인이 발생합니다. 불행하게도 @OneToOne(fetch = FetchType.LAZY) 또는 @ManyToOne(fetch = FetchType.LAZY)에 주석을 달려는 시도는 소용없는 것으로 판명되었습니다.

@ManyToOne 주소 지정

@ManyToOne(fetch = FetchType.LAZY) 의도한 대로 작동해야 합니다. 클래스 주석을 대체할 수 있는 HQL 쿼리 또는 Criteria API 가져오기 모드의 재정의를 다시 확인하세요. 문제가 지속되면 추가 분석을 위해 코드 샘플을 제공하세요.

Addressing @OneToOne

@OneToOne이 더 미묘합니다. 관계가 null을 허용하지 않는 경우 다음과 같이 지정하세요.

@OneToOne(optional = false, fetch = FetchType.LAZY)

null을 허용하는 관계의 경우 다음 접근 방식을 고려하세요.

  1. 외래 키 추가 열: 소유자 테이블에 외래 키 열을 추가하고 관계를 다음과 같이 매핑합니다. "joined":

    @OneToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "other_entity_fk")
    public OtherEntity getOther();
    @OneToOne(mappedBy = "other")
    public OwnerEntity getOwner();
  2. 바이트코드 계측: 데이터베이스 수정이 불가능할 경우 최후의 수단으로 바이트코드 계측을 고려하십시오.
  3. 대체 솔루션: 가능하다면 고유한 ManyToOne 관계 사용과 같은 대체 솔루션을 탐색하세요. 또는 데이터 모델을 다시 검토하여 OneToOne 계층 구조의 깊이를 줄입니다.

주의

지연 가져오기로 성능 문제를 완화할 수 있지만 주의해서 진행하세요. 과도한 OneToOne 관계로 인해 과도한 조인이 발생하는 경우 데이터 모델 또는 엔터티 관계의 근본적인 구조적 문제를 해결하는 것이 좋습니다.

위 내용은 JPA OneToOne 관계를 게으르게 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.