> Java > java지도 시간 > JPA 및 Hibernate의 `mappedBy` 속성은 양방향 관계 관리에 어떻게 도움이 됩니까?

JPA 및 Hibernate의 `mappedBy` 속성은 양방향 관계 관리에 어떻게 도움이 됩니까?

DDD
풀어 주다: 2024-11-03 06:34:30
원래의
973명이 탐색했습니다.

How does the `mappedBy` attribute in JPA and Hibernate help manage bidirectional relationships?

JPA 및 Hibernate의 mappedBy 이해

소개

객체 매핑의 양방향 관계를 방지하려면 종종 주의 깊은 처리가 필요합니다. 데이터베이스 불일치. 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿