JPA

양방향 연관관계와 연관관계 주인

경딩 2024. 12. 5. 19:29

 

 

연관관계의 주인 (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