Spring Boot MongoDB의 관계에 @DocumentReference 사용

3759 단어 springbootjavamongodb
문서 간의 관계를 설정하기 위해 MongoDB는 수동 참조 사용을 권장합니다. @DocumentReference를 사용하여 Spring Boot 애플리케이션에서 이 권장 사항을 따르고 동시에 추가 코드 없이 연결된 문서를 해결할 수 있습니다.

Spring Data MongoDB 버전 3.3.0 이전에는 링크된 문서의 일반 ID를 저장해야만 수동 참조를 설정할 수 있었습니다. 그런 다음 명시적 쿼리를 시작하여 코드에서 대상 문서를 결정하는 작업을 추가로 수행해야 했습니다.

private Address getPrimaryAddress(final Customer customer) {
    return addressRepository.findById(customer.getPrimaryAddressId()).get();
}


전에 수동 참조 해결

현재 새 주석@DocumentReference을 사용할 수 있습니다. 이는 빠른 수동 참조로 대체되며 연결된 문서의 ID만 MongoDB에 저장합니다. 동시에 추가 쿼리에 대해 걱정할 필요 없이 코드에서 대상 문서에 투명하게 액세스할 수 있습니다.

@Document
public class Customer {

    @Id
    private Long id;

    // ...

    @DocumentReference(lazy = true)
    private Address primaryAddress;

}


다른 문서를 수동 참조와 투명하게 연결
@DocumentReference는 관계의 양쪽에 지정될 수 있습니다. 이를 위해 소스 문서를 통해 참조를 확인하기 위해 조회 쿼리뿐만 아니라 @ReadOnlyProperty로 한쪽을 확장해야 합니다. 일대일, 다대일 및 다대다와 같은 모든 일반적인 유형이 지원됩니다. 다대다를 사용하면 대상 문서의 ID 목록이 데이터베이스에 저장되며 중간 테이블/컬렉션이 생성되지 않습니다.

@Document
public class Address {

    @Id
    private Long id;

    // ...

    @DocumentReference(lazy = true, lookup = "{ 'primaryAddress' : ?#{#self._id} }")
    @ReadOnlyProperty
    private Customer customer;

}


일대일 관계의 부모 측

대부분의 경우 설정lazy = true을 권장할 수 있습니다. 초기 데이터가 조인으로 로드되는 JPA와 달리 관계를 해결하려면 MongoDB에 대한 새 쿼리가 항상 필요합니다. 링크된 문서에 실제로 액세스할 때만 이 작업을 수행하면 잠재적으로 추가 쿼리를 저장할 수 있습니다.

Bootify는 사용자 지정 문서 및 관계를 사용하여 MongoDB용 Spring Boot 애플리케이션을 정의하는 데 사용할 수 있습니다. 이를 위해 조회 쿼리를 포함하여 @DocumentReference가 자동으로 생성되며 실행 가능한 응용 프로그램을 다운로드할 수 있습니다.

» Learn more

추가 정보



Manual references vs DBRefs

좋은 웹페이지 즐겨찾기