> Java > java지도 시간 > JPA 관계에서 `@JoinColumn`과 `@mappedBy`의 차이점은 무엇입니까?

JPA 관계에서 `@JoinColumn`과 `@mappedBy`의 차이점은 무엇입니까?

DDD
풀어 주다: 2024-12-28 00:07:09
원래의
724명이 탐색했습니다.

What's the Difference Between `@JoinColumn` and `@mappedBy` in JPA Relationships?

JPA 관계에서 @JoinColumn과 @mappedBy의 차이점 공개

JPA에서 엔터티 간의 관계 관리는 데이터 무결성 및 검색에 중요합니다. . @JoinColumn 및 @mappedBy라는 두 가지 주석은 이러한 관계를 설정하는 데 서로 다른 역할을 합니다.

@JoinColumn: 소유권 및 외래 키 열 표시

@JoinColumn 주석은 관계의 소유자로서의 실체. 즉, 해당 테이블에는 참조된 테이블에 대한 외래 키 참조가 있는 열이 포함됩니다. 제공된 예에서:

@OneToMany(cascade = CascadeType.ALL , fetch = FetchType.LAZY)
@JoinColumn(name = "companyIdRef", referencedColumnName = "companyId")
private List<Branch> branches;
로그인 후 복사

회사 법인은 지점 법인과의 관계를 소유합니다. @JoinColumn 주석은 Branch 테이블의 "companyIdRef"라는 열이 Company 테이블의 "companyId" 열에 대한 외래 키를 보유하도록 지정합니다.

@mappedBy: Indicating Inverse Relationship and Owner in 반대 엔터티

반면에 @mappedBy 속성은 엔터티를 표시합니다. 관계의 반대로서. @mappedBy에 지정된 속성 이름은 해당 관점에서 관계를 나타내는 반대 엔터티의 속성 이름과 일치해야 합니다.

예제에서:

@OneToMany(cascade = CascadeType.ALL , fetch = FetchType.LAZY, mappedBy = "companyIdRef")
private List<Branch> branches;
로그인 후 복사

@mappedBy 속성은 다음을 나타냅니다. 지점 법인은 회사 법인과 관련된 관계와 반대입니다. "companyIdRef"는 Branch 엔터티의 속성 이름과 일치합니다.

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "companyId")
private Company company;
로그인 후 복사

주석 사용의 결과

  • @JoinColumn: @JoinColumn으로 주석이 달린 엔터티 관계를 소유합니다. 즉, 외래 키를 제어합니다. column.
  • @mappedBy: @mappedBy로 주석이 달린 엔터티는 관계의 반대이며 소유자는 반대 엔터티에서 선언됩니다. 두 엔터티를 통해 양방향 액세스가 가능합니다.

결론

JPA 엔터티 간의 올바른 관계를 설정하려면 @JoinColumn과 @mappedBy의 차이점을 이해하는 것이 필수적입니다. . 이러한 주석을 적절하게 활용함으로써 개발자는 데이터 무결성을 유지하고 복잡한 개체 그래프를 원활하게 탐색할 수 있습니다.

위 내용은 JPA 관계에서 `@JoinColumn`과 `@mappedBy`의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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