Spring Boot MongoDB의 관계에 @DocumentReference 사용
3759 단어 springbootjavamongodb
@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
Reference
이 문제에 관하여(Spring Boot MongoDB의 관계에 @DocumentReference 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/tleipzig/using-documentreference-for-relations-in-spring-boot-mongodb-34c6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)