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;
주석 사용의 결과
결론
JPA 엔터티 간의 올바른 관계를 설정하려면 @JoinColumn과 @mappedBy의 차이점을 이해하는 것이 필수적입니다. . 이러한 주석을 적절하게 활용함으로써 개발자는 데이터 무결성을 유지하고 복잡한 개체 그래프를 원활하게 탐색할 수 있습니다.
위 내용은 JPA 관계에서 `@JoinColumn`과 `@mappedBy`의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!