"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > MappedBy는 JPA 및 Hibernate에서 양방향 관계를 어떻게 촉진합니까?

MappedBy는 JPA 및 Hibernate에서 양방향 관계를 어떻게 촉진합니까?

2024년 11월 17일에 게시됨
검색:517

How Does `MappedBy` Facilitate Bidirectional Relationships in JPA and Hibernate?

JPA 및 Hibernate의 MappedBy 이해

JPA 및 Hibernate와 같은 ORM(객체 관계형 매핑) 프레임워크에서 MappedBy는 다음에 대한 유용한 주석입니다. 엔터티 클래스 간의 양방향 관계를 설정합니다. 이 주석은 일대다 및 다대일 관계의 맥락에서 사용됩니다.

권장 사용법

MappedBy의 권장 사용법은 다음과 같습니다.

  • 일대다 관계: 일대다 관계에서는 관계의 "다" 측(컬렉션이 있는 측)에는 MappedBy 주석이 있어야 합니다. 이 주석은 외래 키 제약 조건을 보유하는 관계의 "일" 측에 있는 필드 이름을 지정합니다.
  • 다대일 관계: 다대일 관계에서 관계의 "일" 측(단일 참조 객체가 있는 측)에는 MappedBy 주석이 있어야 합니다. 이 주석은 외래 키 제약 조건을 보유하는 관계의 "다" 측에 있는 필드 이름을 지정합니다.

MappedBy의 목적

MappedBy는 서비스를 제공합니다. 여러 가지 목적:

  • 양방향 순회: 양방향 관계에서 MappedBy를 사용하면 두 테이블 모두에 명시적인 외래 키 정의가 필요 없이 양방향으로 관계를 탐색할 수 있습니다.
  • 최적화: 관계의 소유권을 지정함으로써 MappedBy는 다음과 같이 데이터베이스 성능을 최적화할 수 있습니다. 불필요한 조인 테이블이나 외래 키 방지 제약 조건.

제공된 예에서 항공사는 많은 AirlineFlights를 소유하고 하나의 항공사에 속하는 AirlineFlights, MappedBy는 다음과 같이 AirlineFlight 클래스에서 사용해야 합니다. :

@Entity
@Table(name="AirlineFlight")
public class AirlineFlight {
    // ... other attributes ...

    @ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name="IDAIRLINE", nullable=false)
    @MapsId
    private Airline airline;
    // ... other attributes ...
}

이 예에서 @MapsId 주석은 AirlineFlight의 IDAIRLINE 필드가 항공사 엔터티에 대한 외래 키 제약 조건으로 사용됨을 나타냅니다. 여기에서 MappedBy를 사용하면 두 테이블 모두에 외래 키 제약 조건을 적용할 필요 없이 Airline과 AirlineFlight 간에 양방향 관계를 설정할 수 있습니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3