2012-02-14 2 views
1

인턴쉽을 위해 JPA Compliancy 킷에서 작업 중입니다 ...이 키트의 일부는 올바른 대소 문자 구별을 테스트하는 것입니다.양방향 연결을 위해 @ ManyToMany/@ OneToMany mappedby 속성

@ManyToMany에는 mappedBy 속성이 있습니다. JPA는 다음과 같이 명시하고 있습니다.

String mappedBy - 관계를 소유 한 필드 또는 속성입니다. 관계가 단방향 인 경우가 아니면 필수입니다.

기본값은 지정되지 않습니다. 기본 열은 비어 있습니다.

주어진 양방향 @ManyToMany -이 예제는 JPA 2.0 JSR-317 사양 자체입니다.

고객

@ManyToMany 
@JoinTable(name="CUST_PHONES") 
public Set<PhoneNumber> getPhones() { return phones; } 

PHONENUMBER는

@ManyToMany(mappedBy="phones") 
public Set<Customer> getCustomers() { return customers; } 

mappedBy 속성은 Customer@ManyToMany에 정의되지 않은! 양방향 매핑에 대한 기본 설정이 있습니까?

나는 비슷한 경우를 쳐다 보면서 발견 @OneToOne - @ManyToMany (mappedBy이 기본값은 없습니다, 양방향 선택 사항입니다) 한마디로

, 내 질문에 정확히 같은 - mappedBy는, 디폴트 @OneToMany 선택 사항입니다 : @ManyToMany@OneToMany의 경우 관계 소유의 mappedBy 속성 (예 : Customer)에 어떤 내용을 넣어야합니까?

답변

1

이것은 대소 문자 구별이 아닙니다. 모든 양방향 연관에는 소유자 측과 반대면이 있습니다.

JPA는 소유 측을 사용하여 두 엔티티간에 연관성이 있는지를 결정합니다. 다른 쪽은 무시됩니다.

소유 측면은 (JoinColumn, JoinTable 등의 주석을 사용하여) 연관이 매핑되는 방식을 정의하는 부분입니다. mappedBy 속성이 없습니다.

반대쪽은 mappedBy 속성을 사용하여 "이봐, 나는 단지 다음 속성에 의해 매핑 된 것과 역관계"라고 말합니다.

따라서, 소유 측면에는 mappedBy 속성이 없습니다. 그것이 있다면, 소유 측면이 아닐 것입니다.

이 내용은 JPA spec에 설명되어 있습니다. 이 사양에 대한 호환 키트를 제작해야하는 경우 읽고 이해하는 것이 좋습니다.

난 정말 그런 컴플라이언스 키트를 작성하는 점을 볼 수 없습니다 때문에, JPA2 JSR home page에 기록 된대로,

자바 사양 참가 계약 (JSPA), 자바 퍼시스턴스 API의 요구에 따라

, 버전 2.0 TCK는 자격이 부여 된 비영리 단체에 대한 지원이없는 요금으로 면허가 부여됩니다. 이러한 자격은 호환성 테스트 장학금 프로그램에서 확인됩니다. 장학금 신청 승인을받은 후 으로 무료 지원을받을 수도 있습니다. 자세한 내용은 을 http://java.sun.com/scholarship/으로 참조하십시오.

+0

적합성 키트는 JPA에서 사용하는 주석에 대한 단위 테스트의 멋진 이름입니다. 지금 초점은 ORM입니다 ...이 단위 테스트 (또는 그 라인에있는 다른 것)가 이미 존재한다고 말하고 있습니까? 인턴 과정을 밟고있는이 회사는 오픈 소스 애플리케이션 테스트의 일환으로이를 개발하기를 원합니다. 'mappedBy'의 사용법을 좀 이해하고 있습니다. 정확한 문구에 대해 혼란스러워하고 있습니다. 양방향 관계의 소유 측면을 제외하지 않고 비 단방향 관계에 대해 mappedBy 어노테이션이 필요하다고 말하는 이유는 무엇입니까? – Pimgd

+0

TCK는 JPA 구현을 테스트하는 데 사용됩니다. JPA로 작성된 응용 프로그램을 테스트하는 데 사용되지 않습니다. 그래서 당신 키트가 유용 할 것 같아요. 개발자가 게으르므로 주석 사용자가 JPA 스펙 또는 mappedBy 속성 사용에 대한 자세한 설명이있는 주석 자체의 javadoc을 읽는다고 생각할 것입니다. –

+0

"여기서 mappedBy 속성의 사용에 대해 자세히 설명합니다." 이 문서에 대한 링크를 제공해 주시겠습니까? 온라인에서 찾을 수 있지만, JSR-317 사양에서 읽을 수있는 앵무새처럼 보입니다.이 특별한 상황에 대해 어떤 생각도 밝히지는 못합니다. – Pimgd

관련 문제