소개
객체 매핑의 양방향 관계를 방지하려면 종종 주의 깊은 처리가 필요합니다. 데이터베이스 불일치. Hibernate는 이러한 관계를 설정하기 위해 mappedBy라는 간결한 구문을 제공합니다. 이 기사에서는 JPA 및 Hibernate에서 mappedBy의 목적과 사용법을 설명합니다.
mappedBy란 무엇입니까?
MappedBy는 소유자 엔터티의 기본 키가 소유 테이블의 열입니다. 한 테이블에만 외래 키가 있는 양방향 관계를 다른 테이블에 매핑할 수 있습니다. 이렇게 하면 소유자 엔터티가 관계의 소유권을 보유하고 순환 관계를 방지할 수 있습니다.
mappedBy의 목적
MappedBy는 양방향 관계. 한 테이블을 소유자로 지정하고 다른 테이블에 기본 키를 저장함으로써 일관된 데이터 무결성을 보장합니다.
사용
mappedBy를 사용하려면 주석을 달아야 합니다. mappedBy 속성이 있는 하위 엔터티의 @JoinColumn 또는 @JoinTable. 이 속성은 관계를 나타내는 소유자 엔터티의 속성 이름을 사용합니다.
예
쿼리에 제공된 예를 고려하세요.
<code class="java">@OneToMany(fetch=FetchType.LAZY, cascade = {CascadeType.ALL}) @JoinColumn(name="IDAIRLINE") public Set<AirlineFlight> getAirlineFlights() { return airlineFlights; }</code>
@JoinColumn 주석은 AirlineFlight 테이블의 IDAIRLINE 열에 외래 키 제약 조건을 할당합니다. 그러나 mappedBy 속성이 없습니다.
Airline을 관계의 소유자로 만들려면 다음과 같이 주석을 수정할 수 있습니다.
<code class="java">@OneToMany(fetch=FetchType.LAZY, cascade = {CascadeType.ALL}) @JoinColumn(name="IDAIRLINE", mappedBy="airline") public Set<AirlineFlight> getAirlineFlights() { return airlineFlights; }</code>
mappedBy="airline"을 추가하여 다음을 나타냅니다. AirlineFlight 테이블의 IDAIRLINE 열은 Airline 엔터티의 기본 키입니다. 이는 Airline 테이블에 중복된 외래 키가 필요 없이 Airline이 AirlineFlight 인스턴스를 소유하는 양방향 관계를 설정합니다.
위 내용은 JPA 및 Hibernate의 `mappedBy` 속성은 양방향 관계 관리에 어떻게 도움이 됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!