연관관계의 주인 (Owner)
- 양방향 매핑 규칙
- 객체의 두 관계 중 하나를 연관관계의 주인으로 지정
- 연관관계의 주인만이 외래키를 관리 (등록, 수정)
- 주인이 아닌 쪽은 읽기만 가능
- 주인은 mappedBy 속성 사용 X
- 주인이 아니면 mappedBy 속성으로 주인 지정
- 외래키가 있는 곳은 Many 인 특징이 있다.
- 즉 다 쪽이 무조건 연관관계의 주인이 된다.
import jakarta.persistence.*;
import lombok.Getter;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
@Entity
@Getter
public class Member {
@Id @GeneratedValue
@Column(name = "member_id")
private Long id;
private String name;
private String pw;
private LocalDateTime lastAccessTime;
@OneToMany(mappedBy = "member") // 읽기 전용, db 에 업데이트 안됨
private List<Account> accounts = new ArrayList<>();
}
import jakarta.persistence.*;
import lombok.Getter;
@Entity
@Getter
public class Account {
@Id
@GeneratedValue
@Column(name = "account_id")
private Long id;
@ManyToOne
@JoinColumn(name = "member_id")
private Member member;
private int accountNum;
}
- 단방향 매핑만으로 이미 연관관계 매핑은 완료
- 양방향 매핑은 반대 방향으로 조회 (객체 그래프 탐색) 기능이 추가된 것뿐
- JPQL에서 역방향으로 탐색할 일이 많음
- 단방향 매핑을 잘하고 양방향은 필요할 때 추가해도 됨(테이블에 영향을 주지 않음)
'JPA' 카테고리의 다른 글
공통 인터페이스 기능 (1) | 2024.12.07 |
---|---|
[JPA] 영속성 컨텍스트 (0) | 2024.11.16 |